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

来源:8-3 Go语言异常处理——panic

糊你大熊脸

2017-12-21 15:29

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

写回答 关注

1回答

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

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

    outerFunc()
    //后面

    fmt.Println("Quit main")

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

    糊你大熊脸

    非常感谢!

    2018-01-08 13:47:22

    共 1 条回复 >

Go语言第一课

Go语言入门教程,编程之必备知识扩散,打好Go语言编程基础

107795 学习 · 148 问题

查看课程

相似问题