Go 自定义error错误的处理方法
程序员文章站
2022-07-10 12:35:23
go的error比较灵活.但是自身对error处理的机制有不太好用,我们可以自定义错误输出:只要所有实现了error()方法的对象都可以, 这里给个比较简单的demo,后续整理一个error的优化封装...
go的error比较灵活.但是自身对error处理的机制有不太好用,我们可以自定义错误输出:
只要所有实现了error()方法的对象都可以, 这里给个比较简单的demo,后续整理一个error的优化封装:
package main import ( "fmt" ) type nameemtpyerror struct { name string } //nameemtpyerror实现了 error() 方法的对象都可以 func (e *nameemtpyerror) error() string { return "name 不能为空" } func namecheck(name string) (bool, error) { if name == "" { return false, &nameemtpyerror{name} // 注意error这里必须是地址&引用 } return true, nil } func main() { name := "" if check, err := namecheck(name); err != nil { fmt.println(err) } else { fmt.println(check) } }
在go里定义错误异常的方式有这么两种,但都需要你的返回值是error类型的:
第一种方式是使用golang标准库包errors 来定义错误。使用方法很简单,只需要 return errors.new(“错误信息”) 。 这样就是一个最简单的错误返回。
第二种方式是借用struct结构体,创建一个struct的error()方法,注意这个方法名是error,不然会出现找不到error方法。
下面我们看一个比较完整的error的使用方法。不仅有errors,还有struct error()方式.
package main import ( "errors" "fmt" ) type equalerror struct { num int } //方法名字是error() func (e equalerror) error() string { return fmt.sprintf("当前数字是 %d ,大于10", e.num) } //使用errors.new简单生成 func equal(n int) (int, error) { if n > 10 { return -1, errors.new("大于10") //生成一个简单的 error 类型 } return n, nil } func diyequal(n int) (int, error) { if n > 10 { return -1, equalerror{num: n} // 会调用equalerror的error方法 } return n, nil } func main() { //使用errors.new生成error对象 if result, err := equal(20); err != nil { fmt.println("错误:", err) } else { fmt.println("结果:", result) } //不适用erros,自定义错误方式. if result, err := diyequal(20); err != nil { fmt.println("错误:", err) } else { fmt.println("结果:", result) } }
当然实际开发项目也不建议这么写,太lower不说,也不好扩展. 下一篇准备写个demo,封装优化错误输出的处理.
到此这篇关于go 自定义error错误的文章就介绍到这了,更多相关go 自定义error错误内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
推荐阅读
-
tornado捕获和处理404错误的方法
-
MSSQL附加数据库拒绝访问提示5120错误的处理方法
-
MySQL无法读表错误的解决方法(MySQL 1018 error)
-
Codeigniter中禁止A Database Error Occurred错误提示的方法
-
Apache下error.log文件太大的处理方法
-
php一些错误处理的方法与技巧总结
-
错误类型:Provider (0x80004005)未指定的错误 的一个处理方法
-
SQLserver2000 企业版 出现"进程51发生了严重的异常"错误的处理方法
-
不常见的sql错误处理方法(1)
-
MySQ登录提示ERROR 1045 (28000)错误的解决方法