二,golang中异常与错误

一,Go语言不支持传统的try catch finally

二,在Go语言中,使用多值返回错误,不要用异常代替错误,更不要来控制流程。在极个别情况下,也就是说,真正遇到异常的情况下(除数为0)才使用Go中引入的Exception 处理:defer, panic, recover

三,defer,panic,recover

1,defer 类似于C++中的析构函数,不过Go语言中“析构”的不是对象,而是函数,defer就是用来添加函数结束时执行的语句。注意这里是强调的是添加,而不是指定,因为不同于C++中的析构函数是静态的,Go中的defer是动态的。

 

2.panic 是用来表示非常严重的不可恢复的错误的,在Go语言中这是一个内置函数,接受一个interface{}类型的值(任何类型)作为参数,panic的作用就像我们平常接触的异常,不过Go没有try catch,所以,panic一般会导致导致程序挂掉(除非recover)。

3.recover 内置函数,一旦panic,逻辑就会到defer,我们在defer里面,调用recover函数将会捕获到当前的panic,被捕捉的panic就不会向上传递了,不过,recover之后,逻辑并不会恢复到panic那个点,函数还是会在defer之后返回。

 

posted @ 2018-12-21 15:24  哼哼哼!  阅读(333)  评论(0编辑  收藏  举报