先看代码:
输出:
内建函数panic
可以让我们人为地产生一个运行时恐慌。不过,这种致命错误是可以被恢复的。在Go语言中,内建函数recover
就可以做到这一点。
实际上,内建函数panic
和recover
是天生的一对。前者用于产生运行时恐慌,而后者用于“恢复”它。不过要注意,recover
函数必须要在defer
语句中调用才有效。
因为一旦有运行时恐慌发生,当前函数以及在调用栈上的所有代码都是失去对流程的控制权。只有defer
语句携带的函数中的代码才可能在运行时恐慌迅速向调用栈上层蔓延时“拦截到”它。
C#和Java有 try catch,而Go没有,这种机制在Go语言里就是panic和recover的方式。