zoukankan      html  css  js  c++  java
  • go的错误处理

    1.通常处理

    错误需要开发者主动捕获,同时只能获取是什么错误,无法获悉调用栈(确定具体哪一行,也就是不知道那行出了错误)

    _,err := func()
    if err != nil {
       //错误处理
    }
    

    2.几种常见创建错误的方法

    • 1)errors.New()
      err1 := errors.New("math: square root of negative number")
    • 2)fmt.Errorf()
      err2 := fmt.Errorf("math: square root of negative number %g", x)
    • 3)自定义,实现error接口
    type MyErr struct{}
    func (myerr *MyErr) Error() error {
    }
    

    3.github.com/pkg/errors

    • 主要调用函数
    errors.WithMessage(err,"bar failed") 只能携带原始错误信息
    errors.WithStack(err)  //不携带原始错误信息,保留完整的调用栈
    errors.Wrap(err,"custom message") //携带原始错误信息, 还能尽量保留完整的调用栈
    
    • 打印错误
    fmt.Printf("data not found, %v
    ", err)
    fmt.Printf("%+v
    ", err)
    

    使用 %v 作为格式化参数,那么错误信息会保持一行, 其中依次包含调用栈的上下文文本。使用 %+v ,则会输出完整的调用栈详情。如果不需要增加额外上下文信息,仅附加调用栈后返回,可以使用 WithStack 方法

  • 相关阅读:
    uva129
    uva167
    【Linux】touch命令
    【Linux】od命令
    【Linux】tail命令
    【Linux】head命令
    【Linux】less命令
    【Linux】more命令
    【Linux】nl命令
    【Linux】cat命令
  • 原文地址:https://www.cnblogs.com/fanzou/p/13552910.html
Copyright © 2011-2022 走看看