学科分类
目录
基础

错误和异常概述

Python程序中最常见的错误为语法错误。语法错误又称为解析错误,它是指开发人员编写了不符合Python语法格式的代码所引起的错误。含有语法错误的程序会抛出异常,无法运行。如下所示为一段包含语法问题的代码:

while True
print("语法格式错误")

上述示例代码中的循环语句后少了冒号(:),不符合Python的语法格式。因此语法分析器会检测到错误。

在PyCharm中运行上述代码后,错误信息会在结果输出区进行显示,具体如下:

File " D:/Python项目/异常.py ", line 1
while True
       ^
SyntaxError: invalid syntax

以上错误信息中包含了错误所在的行号、错误类型和具体信息,错误信息中使用小箭头(^)指出语法错误的具体位置,方便开发人员快速地定位并修正。产生语法错误时引发的异常类型为SyntaxError。

一段语法格式正确的Python代码在运行时产生的错误称为异常。如果这些异常不被处理,程序默认的处理方式是直接崩溃。

程序运行时产生异常,示例如下:

for i in 3:
    print(i)

运行代码,结果如下所示:

Traceback (most recent call last):
 File "D:/Python项目/异常.py", line 7, in <module>
  for i in 3:
TypeError: 'int' object is not iterable

上述语句没有任何语法格式错误,但代码执行后出现TypeError异常,这是因为使用for循环对一个整数进行遍历,而for循环不支持对整数类型的遍历。

在Python中所有的异常均由类实现,所有的异常类又继承自BaseException类,程序运行时出现的异常大多继承自Exception类。如图1所示为Python中异常类的继承关系。

img

图1 Python中异常类的继承关系

因为SyntaxError、FileNotFoundError、NameError等常见异常均继承自Exception类,所以本章主要对Exception类及其子类进行介绍,Exception中常见的子类及其描述如表1所示。

表1 Exception中常见的子类

类名 描述
SyntaxError 发生语法错误时引发
FileNotFoundError 未找到指定文件或目录时引发
NameError 找不到指定名称的变量时引发
ZeroDivisionError 除数为0时的异常
IndexError 当使用超出列表范围的索引时引发
KeyError 当使用映射不存在的键时引发
AttributeError 当尝试访问未知对象属性时引发
TypeError 当试图在使用a类型的场合使用b类型时引发
点击此处
隐藏目录