MST

星途 面试题库

面试题:Go语言中Go recover机制在微服务架构的基础应用

在一个简单的微服务示例中,假设某个服务的一个关键函数可能会出现panic异常,你如何使用Go的recover机制来捕获这个异常,确保微服务不会崩溃,并能记录相关错误信息?请给出具体代码示例。
39.2万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import (
    "log"
)

func criticalFunction() {
    // 模拟可能会panic的操作
    panic("模拟一个panic异常")
}

func main() {
    defer func() {
        if r := recover(); r != nil {
            log.Printf("捕获到panic: %v", r)
            // 这里可以进行更多错误处理,例如发送错误信息到监控系统等
        }
    }()

    criticalFunction()
    // 即使criticalFunction中发生panic,后续代码仍可执行
    log.Println("程序继续执行")
}

上述代码中,在main函数中使用defer关键字定义了一个匿名函数,这个匿名函数调用recover函数来捕获可能发生的panic。如果criticalFunction函数中发生panicrecover会捕获到该异常,记录相关错误信息到日志中,并且程序不会崩溃,继续执行defer之后的代码。