Java程序为了防止意外退出,在处理异常时候有try-catch,golang我们则会想到recover函数来处理painc。
recover的使用
recover()是go的内置函数,只能放在defer中,recover的返回值是painc中的对象。常见的用法如下:
1 | func process(i int){ |
注意事项
- recover一定要在defer中,且不能直接调用 比如 defer recover 。
- 如果循环体中出现了painc,因为recover在defer中,则循环会被break,并且recover会在跳出循环后执行。见下面代码
1 | //我们希望的是遇到偶数painc之后recover捕获error,还能继续执行但是循环已经被跳出了 |