本文摘自php中文网,作者尚,侵删。

无论是代码运行错误由 Runtime 层抛出的 panic 崩溃,还是主动触发的 panic 崩溃,都可以配合 defer 和 recover 实现错误捕捉和恢复,让代码在发生崩溃后允许继续运行。
Go 没有异常系统,其使用 panic 触发宕机类似于其他语言的抛出异常,那么 recover 的宕机恢复机制就对应 try/catch 机制。
让程序在崩溃时继续执行
下面的代码实现了 ProtectRun() 函数,该函数传入一个匿名函数或闭包后的执行函数,当传入函数以任何形式发生 panic 崩溃后,可以将崩溃发生的错误打印出来,同时允许后面的代码继续运行,不会造成整个进程的崩溃。
保护运行函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
|
对代码的说明:
相关阅读 >>
[系列] - go-gin-api 路由中间件 - jaeger 链路追踪(六)
最新字节跳动面试题与答案: 无序数组的中位数 (快排思想o(n) 时间复杂度)
go语言中container容器数据结构heap、list、ring
更多相关阅读请进入《golang》频道 >>

Go语言101
一个与时俱进的Go编程知识库。