问答详情
源自:8-3 Go语言异常处理——panic

defer语句的拦截运营是错误的位置

在实例中的代码 defer对于拦截panic函数的位置是怎么确定的?当我把defer放在即将出错的行数前面,则能出现实例中正确的输出,但是后面就会在控制台报错

提问者:糊你大熊脸 2017-12-21 15:29

个回答

  • 慕粉13845046064
    2018-01-05 16:20:52
    已采纳

    //前面
    fmt.Println("Enter main")

    outerFunc()
    //后面

    fmt.Println("Quit main")

    panic在 outerFunc()方法里,你写在后面的位置,panic导致程序崩溃,系统去找defer的时候,还没有执行到,自然也就找不到.
    应该是defer 这个语句,只有程序执行到这一行才有效吧.