入门第 8 / 20 节35 分钟 · 实操
错误处理
Go 课程的一部分
在这门课程里,你已经不止一次敲下 if err != nil,却没有停下来问一句 err 到底是什么、又从哪来。函数会以各种平常且在意料之中的方式失败:调用方要的文件不在磁盘上,调用方给的数字超出了范围,除法的分母是零。程序需要一种方式来报告“这件事没成,原因在这里”,而这种报告要跟真的崩溃区分开,好让调用方能看一眼失败、决定怎么应对,然后继续跑下去。Go 把这套报告机制直接建进语言本身,而不是另外拼一个异常机制上去。这一课讲的就是如何按地道的 Go 代码那样使用它:朴素地返回错误,在错误向上传递的过程中补充上下文,并分清哪些失败程序应该恢复过来,哪些失败意味着已经坏到没法收拾。
上一课里你见过接口,它就是一串方法签名,任何类型只要拥有对应的方法就满足它,两者之间不需要任何声明来关联。error 是这个想法最简单不过的例子,而且直接内置在语言里:
你将学到什么
- Error interface
- Fmt.Errorf with %w
- Errors.Is
- Errors.As
- Custom error types
- Panic vs error
- Wrapping context into errors
用你的语言阅读本课
本课程的所有课时
20 节- 1你好,Go25 分钟
- 2变量与类型25 分钟
- 3控制流:if 与 for30 分钟
- 4函数30 分钟
- 5切片(slices)与映射(maps)35 分钟
- 6结构体(structs)与指针(pointers)35 分钟
- 7方法(methods)与接口(interfaces)35 分钟
- 8错误处理35 分钟
- 9模块(modules)与项目结构35 分钟
- 10迷你 CLI 综合项目40 分钟
- 11标准库之旅40 分钟
- 12测试与基准测试(benchmarks)40 分钟
- 13协程(goroutines)与通道(channels)40 分钟
- 14并发模式45 分钟
- 15泛型(generics)35 分钟
- 16HTTP 服务器45 分钟
- 17使用 database/sql 的数据库45 分钟
- 18性能与分析40 分钟
- 19Go 语言中的设计模式40 分钟
- 20部署与生产45 分钟
探索其他课程
Python
19 节 · 9.3小时
React
17 节 · 10.2小时
Linux
17 节 · 8.5小时
Docker
13 节 · 6.6小时
Git
13 节 · 5.9小时
Kubernetes
14 节 · 8小时
Ansible
12 节 · 6.1小时
Bash
12 节 · 5.7小时
Helm
10 节 · 5.4小时
GitLab CI
11 节 · 5.8小时
Jenkins
11 节 · 5.3小时
PostgreSQL
14 节 · 7.6小时
MySQL
13 节 · 6.8小时
Web
14 节 · 5.9小时
TypeScript
18 节 · 7.7小时
Vibe Coding
12 节 · 5.8小时
Prompt Engineering
11 节 · 6.2小时
Vibe 编程:基础
12 节 · 4.5小时
Vibe 编程:从原型到生产
12 节 · 5.5小时
Vibe 编程:多智能体工程
12 节 · 5.3小时
Vibe 编程:高级工程
12 节 · 7.3小时
