MST

星途 面试题库

面试题:Go语言中panic和recover的基本使用场景

请简述在Go语言中,panic和recover分别在什么场景下使用?并举例说明如何使用recover来捕获panic。
46.0万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试

panic的使用场景

  1. 程序遇到不可恢复的错误:例如在解析配置文件时,配置文件格式严重错误,无法继续正常运行程序,就可以使用 panic 终止当前 goroutine。
  2. 在运行时检测到不应该出现的条件:比如函数内部发现传入了一个不可能出现的参数值,此时可以使用 panic

recover的使用场景

recover 用于捕获 panic,将程序从 panic 状态中恢复,使程序能够继续运行,通常用于延迟函数 (defer) 中。

示例代码

package main

import (
    "fmt"
)

func main() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recovered from panic:", r)
        }
    }()
    testPanic()
    fmt.Println("After testPanic")
}

func testPanic() {
    panic("This is a test panic")
}

在上述代码中,testPanic 函数引发了一个 panicmain 函数中的延迟函数捕获到了这个 panic,并进行了恢复,因此程序不会崩溃,还能继续执行 fmt.Println("After testPanic") 这行代码。