Python异常处理简介¶
编写程序时遇到的错误可大致分为两类: 语法错误和运行时错误.
语法错误¶
语法错误, 也就是解析代码时出现的错误.
当代码不符合Python语法规则时, Python解释器在解析时就会报SyntaxError语法错误, 与此同时还会明确指出最早探测到错误的语句.
语法错误多是开发者疏忽造成的, 属于真正意义上的错误, 是解释器无法容忍的. 因此, 只有将程序中的所有语法错误全部纠正, 程序才能执行.
运行时错误¶
运行时错误, 即程序在语法上都是正确的, 但在运行时发生了错误.
在Python中, 把运行时产生错误的情况叫做异常(Exceptions), 用异常对象来表示异常状态, 在遇到错误时引发异常.
| 异常类型 | 说明 |
AssertionError |
当assert关键字后的条件为假时, 程序运行会停止并抛出此异常. |
AttributeError |
当试图访问的对象属性不存在时抛出的异常. |
IndexError |
索引超出序列范围会引发此异常. |
KeyError |
字典中查找一个不存在的关键字时引发此异常. |
NameError |
尝试访问一个未声明的变量时, 引发此异常. |
TypeError |
不同数据类型之间的无效操作. |
ZeroDivisionError |
除法运算中除数为0引发此异常. |
当一个程序发生异常时, 代表该程序在执行时出现了非正常的情况, 无法再执行下去. 默认情况下, 程序是要终止的. 如果要避免程序退出, 可以使用捕获异常的方式获取这个异常的名称, 再通过其它的逻辑代码让程序继续运行, 这种根据异常做出的逻辑处理叫做异常处理.
为什么要使用异常处理¶
异常处理是现代编程语言不可或缺的能力, 它已经成为衡量一门编程语言是否成熟和健壮的标准之一, C++/Java/C#/Python等高级语言都提供了异常处理机制.
对于构建大型, 健壮, 可维护的程序而言, 错误处理是整个程序需要考虑的重要方面.
传统的错误处理, 使用if语句对各种情况进行判断, 对于这种错误处理机制, 主要有以下两个缺点:
- 很难穷举所有的异常情况;
- 错误处理代码和业务实现代码混杂. 这种错误处理和业务实现混杂的代码严重影响程序的可读性, 会增加程序维护的难度.
使用异常处理机制, 可以让程序中的异常处理代码和正常业务代码分离, 使得程序代码更加优雅, 并可以提高程序的健壮性.