06 2022 档案
摘要:下面定义了一个全局的error,通常error变量命名以Err开头,后面是错误类型. 哨兵error期望描述的是一个预期的错误,下面以SQL库为例进行说明。 import "errors" var ErrFoo = errors.New("foo") 设计一个查询数据库的Query方法,该方法返回结
阅读全文
摘要:介绍了可以通过%w对error进行wrap。但是一旦对error通过%w进行包装,后续在对包装后的error通过type进行判断的时候,必须采用合适的方法,否则将会出错。 下面通过一个具体的HTTP handler例子进行说明,该例功能是查询某个给定账号的交易金额。handler处理逻辑是从请求中获
阅读全文
摘要:通常来说,有以下两种场景需要对error进行包装. 向error中添加上下文信息 将error转为一个特定的error 作者对上面的场景各举了一个例子进行说明。对需要向error中添加上下文信息的情况,以数据库操作为例,某个角色身份的人请求数据库操作,但是它没有查询权限,当它在查询的时候会返回一个没
阅读全文
摘要:panic会终止代码执行逻辑 panic语句会终止代码执行,即fmt.Println("b")不会被执行. func main() { fmt.Println("a") panic("foo") fmt.Println("b") // panic之后的内容不会输出,类似于linux中的exit函数功
阅读全文