MST

星途 面试题库

面试题:Go中panic与recover机制基础运用

请简述Go语言中panic和recover的作用,并编写一段简单代码,在函数中使用panic触发异常,然后在defer函数中使用recover捕获并处理这个异常,最后打印出相应的错误信息。
48.7万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
  1. panic的作用
    • panic 用于主动引发运行时错误。当 panic 函数被调用时,程序会立即停止当前函数的执行,开始展开(unwind)调用栈,即从当前函数向调用它的函数返回,并依次执行这些函数中的 defer 语句,直到程序崩溃,打印出 panic 的错误信息。
  2. recover的作用
    • recover 用于在 defer 函数中捕获 panic 引发的异常。如果 recover 在正常的函数调用中(非 defer 函数内)调用,它会返回 nil。在 defer 函数中调用 recover 可以阻止程序崩溃,并获取到 panic 传递的错误值,从而进行相应的错误处理。

以下是示例代码:

package main

import (
    "fmt"
)

func main() {
    test()
}

func test() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("捕获到异常:", r)
        }
    }()
    panic("触发异常")
}

在上述代码中,test 函数中使用 panic 触发了一个异常,defer 函数中的 recover 捕获到了这个异常,并打印出了相应的错误信息。