作者回复: 你是什么操作系统?试试echo $?
作者回复: go不是采用异常机制的,而是采用错误机制
fun m3() error{
...
return errors.New("failed to run m3")
}
func m2() error{
err:=m3()
if err!=nil{
return err
}
...
}
而panic和recovery也并不是如其他语言的exception那样使用的。
作者回复: func TestPanicVxExit(t *testing.T) {
defer func() {
if err := recover(); err != nil {
fmt.Println("recovered from ", err)
}
}()
fmt.Println("Start")
panic(errors.New("Something wrong!"))
}
//output:
Start
recovered from Something wrong!
从输出你可以看出defer处理了panic中抛出的error
作者回复: defer定义的范围对吗?粘贴一下你的代码吧
作者回复: recover一般适用于应用程序全局的未处理错误而不是某个函数。