3-20 panic和recover
相比error,panic、recover在使用方法上更接近try…catch结构化异常。
- 内置函数,而非语句。
- 参数为接口类型,可以是任何对象。
- 无论是否执行recover,延迟调用都会执行。
- 仅最后一个panic会被捕获。
- 只能在延迟函数中直接使用recover。
Go语言中,panic、recover和try…catch结构化异常非常相似。官方文档推荐不要使用panic尽量使用error。panic相当于抛出异常,在defer里面捕获异常。正常情况下,使用error方式来实现,当框架中做流程干涉可以考虑panic,例如数据库打开错误