一起重温Golang中的异常处理啊?
- 1.Golang语言中没有其他语言中的
try...catch...
语句来捕获异常和异常恢复 - 2.在Golang中我们通常会使用
panic
关键字来抛出异常,在defer
中使用recover
来捕获异常进行具体逻辑处理 - 3.Golang中我们通常会在函数或方法中返回
error
结构对象来判断是否有异常出现
注意事项
- 1.利用
recover
和panic
指令,defer
必须放在panic之前定义(panic会终止其后要执行的代码
). - 2.
recover
只有在defer
调用的函数中才有效,否则recover
无法捕获到panic
. - 3.
recover
处理异常后,业务逻辑会跑到defer
之后的处理片段中 - 4.多个
defer
会形成defer栈
- 5.panic会等到整个
goroutine
退出才会报告错误
常规使用
panic
以及recover
参数类型为空接口(可存储任何类型对象)interface{}
/*
func panic(v interface{})
func recover() interface{}
执行顺序:panic()->带r