golang中异常处理
Posted Leo Han
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang中异常处理相关的知识,希望对你有一定的参考价值。
程序在运行过程中如果出现了问题,可以通过抛出异常、捕获异常来进行异常的处理,在golang中,异常的接口为error
:
type error interface
Error() string
因此,只要一个结构体实现了Error() string方法,就是实现了error接口
:
type MyError struct
func (err *MyError)Error() string
return "this is MyError"
golang中可以通过panic来抛出异常,recover来捕获异常。如果不处理异常,最终会是程序整个退出
另外**捕获异常必须在defer中进行捕获,否则捕获异常recover不起作用**
type MyError struct
func (err *MyError)Error() string
return "this is MyError"
func PanicError()
fmt.Println("panic error")
panic(MyError)
func main()
defer func()
if err := recover() ; err != nil
fmt.Println("catch error ",err)
()
PanicError()
defer的机制,有点类似于java中的finall语句块
go中多个defer语句与defer的顺序相反执行,可以理解是将defer放入到一个先进后厨的队列中
以上是关于golang中异常处理的主要内容,如果未能解决你的问题,请参考以下文章