前言:
GO语言追求简洁优雅,GO语言不类似try catch操作
GO语言中引入的处理方式为:defer、panic、recover
GO可以抛出一个panic异常。然后在defer中通过recover捕获异常再处理
GO没有提供“try-catch-finally”这样的异常处理机制,然而是提供出panic和recover,当然panic写recover还要结合defer使用。
虽然对于其他语言转型的大家一开始会有点不适用,甚至会有征讨之声。但个人感觉,这才是go,这很go。
我们先简单介绍一下panic,defer,recover他们三个各自的功能和实现。
Panic
Panic是内建的停止控制流的函数。相当于抛异常操作。当函数F调用了panic,F的执行会被停止,在F中panic前面定义的defer操作都会被执行,然后F函数返回。对于调用者来说,调用F的行为就像调用panic(如果F函数内部没有把panic recover掉)。如果都没有捕获该panic,相当于一层层panic,程序将会crash。
Defer
Defer语句将一个函数放入一个列表(用栈表示其实更准确)中,该列表的函数在环绕defer的函数返回时会被执行。
Recover
Recover是一个从panic恢复的内建函数。Recover只有在defer的函数里面才能发挥真正的作用。如果是正常的情况(没有发生panic),调用recover将会返回n
本文介绍了Go语言中如何使用defer、panic和recover进行异常处理。panic相当于抛出异常,defer在函数返回时执行,recover则用于在defer中捕获并恢复panic。通过示例展示了它们的搭配使用,强调recover必须在defer中调用才有效。文章探讨了使用这种方式处理异常的优点,包括简化代码、集中错误处理和资源管理等,并提供了正反面的编码风格对比,引导读者思考何时使用panic。最后提出一个问题,讨论如何在不同goroutine间处理panic事件。
最低0.47元/天 解锁文章
742

被折叠的 条评论
为什么被折叠?



