MST

星途 面试题库

面试题:Go语言中panic与recover机制的基础使用

请描述在Go语言中,panic函数和recover函数的作用分别是什么?并举例说明如何使用它们来处理程序中的异常情况。
16.1万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试

panic函数作用

panic函数用于主动抛出一个运行时错误,终止当前函数的执行,并开始展开调用栈。当panic发生时,程序会立即停止正常执行流程,打印错误信息,并反向遍历调用栈,直至程序崩溃并输出栈跟踪信息。

recover函数作用

recover函数用于在defer函数中捕获由panic抛出的错误,从而避免程序崩溃。它只能在defer函数中使用,若当前没有panic发生,调用recover会返回nil

示例代码

package main

import (
    "fmt"
)

func main() {
    // 调用可能会panic的函数,并使用defer和recover来捕获异常
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recovered from panic:", r)
        }
    }()

    testPanic()
    fmt.Println("This line will not be printed if panic is not recovered")
}

func testPanic() {
    // 模拟一个错误情况,抛出panic
    panic("This is a panic")
}

在上述示例中,testPanic函数使用panic抛出了一个错误。main函数中通过defer注册了一个匿名函数,该匿名函数中使用recover捕获了panic,使得程序不会崩溃,并输出了错误信息。如果没有recover,程序会直接崩溃并输出panic的错误信息和调用栈。