目录
1,基本概念
在其他语言里,通过try-catch方式捕获异常,且用花括号包裹,在GO语言里,通过panic(抛出异常错误),recover(捕获异常并继续运行),他们之间不需要花括号包裹。
panic(宕机) 和 recover(恢复)是Go语言的两个内置函数,这两个内置函数用来处理Go的运行时错误(runtime errors)。panic 用来主动抛出异常,recover 用来捕获panic 抛出的异常。
2,异常详解
引发panic有两种情况:一种是程序遇到了无法正常执行下去的错误,程序主动调用panic()函数,另一种是程序产生运行时错误,由运行时检测并抛出。当panic()触发的宕机发生时,panic后面的代码将不会被执行,但是在panic()函数前面的已经执行过的defer语句依然会在宕机发生时执行defer中的延迟函数。
recover()函数用来捕获或者说是拦截panic的,阻止panic继续向上层传递。无论是主动调用panic()函数触发的宕机还是程序在运行过程中由Runtime层抛出的异常,都可以配合defer 和 recover 实现异常捕获和恢复,让代码在发生panic后能够继续执行。