文档章节

golang 1.13 errors 包来了,不用写“err 气功波”代码

guonaihong
 guonaihong
发布于 10/14 12:58
字数 220
阅读 93
收藏 1
Go

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

这篇是对 errors 包 的姿势挖掘

气功波错误代码

从 http.Get()返回的错误 判断 syscall.ECONNREFUSED 错误.以前要对 go 标准库 error 结构有点熟悉,才能写出下面的代码

func CmdErr(err error) {
    if err == nil {
        return
    }   

    if uerr, ok := err.(*url.Error); ok {
        if noerr, ok := uerr.Err.(*net.OpError); ok {
            if scerr, ok := noerr.Err.(*os.SyscallError); ok {
                if scerr.Err == syscall.ECONNREFUSED {
                    fmt.Printf("gurl: (7) couldn't connect to host\n")
                    return
                }
            }
        }
    }   

    fmt.Printf("%s\n", err)
}

用 go1.13 errors 库重构气功波代码

现在只要知道,syscall.ECONNREFUSED 就行。errors.Is直接判断

func newCmdErr2(err error) {

    if errors.Is(err, syscall.ECONNREFUSED) {
        fmt.Printf("gurl: (7) couldn't connect to host\n")
        return
    }   
}

github

https://github.com/guonaihong/gout

© 著作权归作者所有

guonaihong

guonaihong

粉丝 6
博文 83
码字总数 27591
作品 1
徐汇
程序员
私信 提问
golang 1.13 errors 包 新函数介绍

引 这次 errors 包算重量级更新。很有更能把以前的一些设计模式给推到。下面聊下用法。 error 装包 以前返回一个错误,想要保存 error 链,还要定义结构体保存以前的 error 信息。感兴趣看下...

guonaihong
10/15
114
4
『Go 语言学习专栏』-- 第五期

大家好,我叫谢伟,是一名程序员。 我正在着手扎实学习 golang , 这个专栏是我的输出整理文章。 希望能带有心人一起学习 golang , 力求从入门到中级程序员水平。 我们已经研究了: Golang 环...

谢小路
2018/05/11
0
0
Go圣经-学习笔记之error接口

上一篇 Go圣经-学习笔记之http.Handler接口 下一篇 Go圣经-学习笔记之并发循环 error接口定义 初学者一般使用error的方法:,我们现在看一下error接口定义: Go语言默认实现了一个error接口,...

cdh0805010
2017/10/28
354
0
在 Golang 中用名字调用函数

上个星期,我写了篇《Function call by name in Golang》。由于是英文的,所以被人诟病(说谁,谁知道!)。好吧,现在用中文重新写一遍。 Golang 中的函数跟 C 的一样,是个代码块,不过它可...

kuerant
2014/01/26
2K
0
TODO:Golang UDP连接简单测试慎用Deadline

TODO:Golang UDP连接简单测试慎用Deadline UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的...

OneTODO
2016/11/10
514
0

没有更多内容

加载失败,请刷新页面

加载更多

wait()和sleep()之间的区别

线程中的wait()和sleep()有什么区别? 我是否知道wait() ing线程仍处于运行模式并使用CPU周期,但是sleep() ing不会消耗任何CPU周期正确吗? 为什么我们都 wait()和sleep()如何实现他们在一个...

javail
5分钟前
3
0
好程序员大数据实用教程之面向对象进阶

好程序员大数据实用教程之面向对象进阶:包的创建与使用 是对一个程序中指定功能的部分代码进行包装 构造方法 是一个方法 特殊点: 构造方法没有返回值,不是指的返回值类型是void,而是根本...

好程序员官网
7分钟前
3
0
centos以RPM包方式安装redis的方法

Redis(全称:Remote Dictionary Server 远程字典服务)是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日...

Linux就该这么学
9分钟前
3
0
用敏捷估算扑克牌如何估算?

敏捷估算扑克的使用方法多样,可结合项目自身情况使用,怎样使用?使用过程中要遵循哪些规则?用它估算有什么好处呢?一起来看视频吧。(关注“禅道项目管理软件”微信公众号,更多精彩与您分...

炒蚕豆吃蹦豆
11分钟前
3
0
Quick BI支持哪些数据源(配置操作篇)

Quick BI 潜心打造了核心技术底座(OLAP分析引擎),实现了SQL解析、SQL调度、SQL优化、查询加速等基础能力,支撑Quick BI的数据分析和查询加速。OLAP分析引擎包括数据源连接、数据模型、智能...

一肥仔
14分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部