Python异常处理简介

编写程序时遇到的错误可大致分为两类: 语法错误和运行时错误.

语法错误

语法错误, 也就是解析代码时出现的错误. 当代码不符合Python语法规则时, Python解释器在解析时就会报SyntaxError语法错误, 与此同时还会明确指出最早探测到错误的语句.

语法错误多是开发者疏忽造成的, 属于真正意义上的错误, 是解释器无法容忍的. 因此, 只有将程序中的所有语法错误全部纠正, 程序才能执行.

运行时错误

运行时错误, 即程序在语法上都是正确的, 但在运行时发生了错误.

在Python中, 把运行时产生错误的情况叫做异常(Exceptions), 用异常对象来表示异常状态, 在遇到错误时引发异常.

Python常见异常类型
异常类型 说明
AssertionError assert关键字后的条件为假时, 程序运行会停止并抛出此异常.
AttributeError 当试图访问的对象属性不存在时抛出的异常.
IndexError 索引超出序列范围会引发此异常.
KeyError 字典中查找一个不存在的关键字时引发此异常.
NameError 尝试访问一个未声明的变量时, 引发此异常.
TypeError 不同数据类型之间的无效操作.
ZeroDivisionError 除法运算中除数为0引发此异常.

当一个程序发生异常时, 代表该程序在执行时出现了非正常的情况, 无法再执行下去. 默认情况下, 程序是要终止的. 如果要避免程序退出, 可以使用捕获异常的方式获取这个异常的名称, 再通过其它的逻辑代码让程序继续运行, 这种根据异常做出的逻辑处理叫做异常处理.

为什么要使用异常处理

异常处理是现代编程语言不可或缺的能力, 它已经成为衡量一门编程语言是否成熟和健壮的标准之一, C++/Java/C#/Python等高级语言都提供了异常处理机制.

对于构建大型, 健壮, 可维护的程序而言, 错误处理是整个程序需要考虑的重要方面.

传统的错误处理, 使用if语句对各种情况进行判断, 对于这种错误处理机制, 主要有以下两个缺点:

  • 很难穷举所有的异常情况;
  • 错误处理代码和业务实现代码混杂. 这种错误处理和业务实现混杂的代码严重影响程序的可读性, 会增加程序维护的难度.

使用异常处理机制, 可以让程序中的异常处理代码和正常业务代码分离, 使得程序代码更加优雅, 并可以提高程序的健壮性.