• 行军伙夫
    2019-04-04
    老师,为啥我os.Exit(-1),在输出的地方没有看到exit status 255

    作者回复: 你是什么操作系统?试试echo $?

     1
     3
  • 嘤嘤嘤,叫大哥
    2019-12-04
    老师的视频中 第一个例子貌似defer的执行结果看。是在panic之前,费解?

    作者回复: 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

    
     2
  • iMARS
    2019-09-23
    如何返回调用栈的内部异常?例如,m1 call m2,m2又call了m3,结果m3引发了异常,导致m2失败,如何包裹m3的异常输出?有没有好的pattern或建议?谢谢

    作者回复: go不是采用异常机制的,而是采用错误机制
    fun m3() error{
        ...
        return errors.New("failed to run m3")
    }

    func m2() error{
         err:=m3()
         if err!=nil{
             return err
         }
         ...
    }

    而panic和recovery也并不是如其他语言的exception那样使用的。

     1
     1
  • will
    2019-11-02
    老师,请问,我的defer函数里面再调用一个函数使用了recover,为什么catch不了panic?

    作者回复: defer定义的范围对吗?粘贴一下你的代码吧

    
    
  • 唯一
    2019-07-14
    老师,请问,如果一个函数发生了不可预知的运行时错误,我们怎么让这个函数返回一个自定义的值,我在defer的函数里调用了recover后,发现函数返回的是返回数据类型的零值,但有没有办法自定义这个运行时错误的返回值?

    作者回复: recover一般适用于应用程序全局的未处理错误而不是某个函数。

    
    
我们在线,来聊聊吧