第 5 章 异常与错误处理
朱雷
多年前刚开始使用 Python 编程时,我一度非常讨厌“异常”(exception)。原因很简单,因为程序每次抛出异常,就代表肯定发生了什么意料之外的“坏事”。
比如,程序本应该调用远程 API 获取数据,却因为网络不好,调用失败了,这时我们就会看到大量的 HTTPRequestException 异常。又比如,程序本应把用户输入的内容存入数据库,却因为内容太长,保存失败,我们又会看到一大堆 DatabaseFieldError 异常。
为了让程序不至于被这些异常搞崩溃,我不得不在代码里加上许多 try/except 来捕获这些异常。所以,那时的异常处理对于我来说,就是一些不想做却又不得不做的琐事,少有乐趣可言。
但慢慢地,在写了越来越多的 Python 代码后,我发现不能简单地把异常和“意料之外的坏事”画上等号。异常实际上是 Python 这门编程语言里许多核心机制的基础,它在 Python 里无处不在。
比如,每当你按下 Ctrl + C 快捷键中断脚本执行时,Python 解释器就会抛出一个 Keyboard- Interrupt 异常;每当你用 for 循环完整遍历一个列表时,就有一个 StopIteration 异常被捕获。代码如下所示:
同时我开始认识到,错误处理不是什么编程的额外负担,它和所有其他工作一样重要。如果能善用异常机制优雅地处理好程序里的错误,我们就能用更少、更清晰的代码,写出更健壮的程序。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
异常处理在Python编程中至关重要。本文介绍了异常处理的重要性以及在Python中的两种编程风格:LBYL和EAFP。作者强调了异常处理不仅仅是为了避免程序崩溃,更重要的是对程序中的错误进行妥当处理。通过精准的异常捕获和避免过度捕获异常,可以写出更少、更清晰的代码,从而编写更健壮的程序。文章还通过案例故事展示了异常处理的重要性,以及避免抛出高于当前抽象级别的异常和包装低于当前抽象级别的异常的重要性。此外,文章还提到了编程建议,包括不要随意忽略异常、不要手动做数据校验以及抛出可区分的异常。总的来说,本文通过介绍异常处理的重要性和Python中的两种编程风格,帮助读者更好地理解异常处理的基础知识和在Python编程中的重要性。文章还介绍了一些编程技巧,如不要使用assert来检查参数合法性以及无须处理是最好的错误处理。通过案例和技巧的介绍,读者可以更好地理解异常处理的重要性和在Python编程中的应用。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Python 工匠:案例、技巧与工程实践》
《Python 工匠:案例、技巧与工程实践》
立即购买
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论