Go异常处理

想法

Go的异常处理是比较特别的.有人不喜欢这种走两步就 if err,然而生活就是这样.

func getOrderNo(detail interface{}) (s string, err error) {
    defer func() {
        if recover() != nil {
            err = errors.New("发生错误")
        }
    }()
    panic(err.Error()) //手动触发ERROR
    return
}

这是我理解的实现方式之一,在错误可能发生之前,定义好如果发生了错误要做什么.
这样一旦发生错误,唯一会执行的就是defer 后边的 func,recover会捕获发生的错误,手动转化为err对象之后,后续可以作出相应的处理.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • error 接口声明如下: 创建error err:=errors.New("")//返回的是其返回的error类...
    吃猫的鱼0阅读 4,264评论 0 1
  • fmt格式化字符串 格式:%[旗标][宽度][.精度][arg索引]动词旗标有以下几种:+: 对于数值类型总是输出...
    皮皮v阅读 4,778评论 0 3
  • 选择题 [primary] 下面属于关键字的是() A. func B. def C. struct D. cla...
    盘木阅读 5,771评论 0 29
  • Go入门 Go介绍 部落图鉴之Go:爹好还这么努力? 环境配置 安装 下载源码编译安装 下载相应平台的安装包安装 ...
    齐天大圣李圣杰阅读 10,076评论 0 26
  • 如今,写网络连接的时候发现 API 23 中居然找不到 HttpClient,官方文档似乎是这样说的: 是的,没错...
    生活简单些阅读 5,940评论 0 6