# z1err **Repository Path**: z1gotool/z1err ## Basic Information - **Project Name**: z1err - **Description**: errors for golang added by myzero1 - **Primary Language**: Go - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-07-16 - **Last Updated**: 2026-07-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # err #### 介绍 简化 golang 的错误处理流程,减少 iferr。 #### 软件架构 软件架构说明 ``` 错误处理思路总结 本函数外处理 直接返回错误 defer z1err.Handle(&err) 本函数需要使用具名的error返回值,如 func1()(err error){...} 本函数内处理 单独处理 在发送错误的地方处理,官方推荐 if err != nil {...} 集中处理,减少if err != nil {...}重复出现的次数 在统一处理错误的地方处理 defer z1err.Handle(nil, func(err error) {log.Println(err)} check/handle 方案的分析 优点 视觉呈现较好 实现复杂度较低 具有通用性 缺点 直接返回错误时,本函数需要使用具名的error返回值 defer在go1.14之前有额外性能开销,之后可以忽略不计 panic/recover让函数调用的性能降低大约90%。 28.8ns/op > 271ns/op,函数调用花的时间非常少是纳秒所以问题不大。 ``` #### 安装教程 1. go get gitee.com/z1gotool/z1err 2. go get gitee.com/z1gotool/z1err@1.0.0 #### 使用说明 1. read test/case_test.go(测试用例) 2. read rs/main.go(运行示例) 3. 实例 ``` package main import ( "errors" "log" "gitee.com/z1gotool/z1err" ) func main() { defer z1err.Handle(nil, func(err error) { log.Println(err) log.Println(`-----------`) log.Println(z1err.StackPrint(err, 0)) log.Println(`-----------`) log.Println(z1err.Is(err, `this is s test err`, `main.func1`)) log.Println(`-----------`) log.Println(z1err.Is(err, `this is s test err`, `/lib1.func1`)) }) log.Println(`-----------`) func3() } func func3() { func2() } func func2() { func1() } func func1() { // panic(errors.New(`this is s test err`)) err := errors.New(`this is s test err`) z1err.Check(err) } ``` #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme_XXX.md 来支持不同的语言,例如 Readme_en.md, Readme_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)