MST

星途 面试题库

面试题:Go中recover的基本使用场景

在Go语言中,请阐述recover通常用于哪些基本场景,并且编写一段简单的代码示例展示如何使用recover捕获并处理一个运行时的panic异常,恢复程序的正常执行。
47.7万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试

recover的基本场景

  1. 处理运行时错误:在Go语言中,当程序遇到不可恢复的错误时会触发 panicrecover 可用于捕获这些 panic,避免程序崩溃,使程序能从错误状态中恢复并继续执行。
  2. 在延迟函数中处理异常recover 只能在延迟函数 (defer) 中生效,通常用于在函数执行即将结束时捕获可能发生的 panic

代码示例

package main

import "fmt"

func main() {
    // 调用可能触发panic的函数
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recovered from panic:", r)
        }
    }()

    testPanic()
    fmt.Println("This line will be printed after recovery.")
}

func testPanic() {
    panic("Simulated panic")
}

在上述代码中:

  1. main 函数中定义了一个延迟函数,该延迟函数使用 recover 来捕获可能发生的 panic
  2. testPanic 函数触发了一个 panicmain 函数中的延迟函数捕获到这个 panic,输出错误信息并恢复程序执行,使得 fmt.Println("This line will be printed after recovery.") 这行代码能够执行。