提问人:Siva 提问时间:6/16/2023 最后编辑:Jonathan HallSiva 更新时间:6/20/2023 访问量:97
如何防止未处理的恐慌使我的申请进程崩溃
How to prevent unhandled panic from crashing my application process
问:
我想要一种机制,通过该机制,任何未经处理的恐慌(来自 Go 代码)都不会使我的申请流程瘫痪。目前,我的golang代码引发的任何下游恐慌都会冻结/崩溃我的应用程序。如何正常处理所有紧急情况,同时仍继续为客户端应用程序提供服务?
答:
-1赞
Abhishek Mali
6/16/2023
#1
//You could use defer-recovery to handle all possible panic's
func handelPanic(){
if recoverPanic := recovery();recoverPanic != nil{
fmt.Println("Panic is being recovered...")
//Call function which you want to restart after panic is being recovered
}
}
func main() {
defer handlePanic()
//some code that needs to check err
if err != nil{
panic(err)
}
}
上面的以下代码将简单地处理所有恐慌,如果在 defer 内的 main 函数中使用恢复。
评论