Python常见异常类型处理
本文系统梳理了Python开发中常见的两类错误:语法错误与运行时异常。通过具体代码示例,详细解析了SyntaxError的触发机制及Python 3中print语句的变化,并深入讲解了ZeroDivisionError等常见运行时异常的表现形式。文章旨在帮助开发者理解异常产生的原因,掌握通过异常处理提升程序健壮性的基本方法。
前言:
在程序开发过程中,错误的发生是不可避免的。这些错误可能源于编写者的疏忽导致的语法问题,也可能由程序内部隐含的逻辑缺陷引发数据错误,亦或是程序运行阶段与系统规则发生冲突所产生的系统级错误。
总体而言,编程过程中遇到的错误主要可以归纳为两大类别:语法错误和运行时错误。
1.Python语法错误
所谓语法错误,是指在代码解析阶段出现的错误。当编写的代码不符合 Python 的语法规则时,Python 解释器在尝试解析代码时会抛出 SyntaxError 语法错误,并且会明确指出最早发现该错误的语句位置。
例如:
print "Hello,World!"
众所周知,Python 3 已经不再支持上述的写法。因此,在运行代码时,解释器会报出如下错误信息:
SyntaxError: Missing parentheses in call to 'print'
语法错误通常是由开发者的疏忽造成的,属于真正的代码错误。解释器对此类错误无法容忍,因此,只有将程序中所有的语法错误全部修正后,程序才能正常执行。
2.Python运行时错误
运行时错误是指程序在语法层面完全正确,但在实际运行过程中发生了错误。
例如:
a = 1/0
上述代码的含义是“将 1 除以 0 的结果赋值给变量 a”。
由于 0 不能作为除数,这在数学上是无意义的,因此运行该代码后会产生如下错误:
>>> a = 1/0
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
a = 1/0
ZeroDivisionError: division by zero
在上述运行输出结果中,前两段内容指明了错误发生的位置,最后一句则指出了错误的类型。在 Python 中,这种在运行时产生的错误情况被称为异常(Exceptions)。此类异常情况种类繁多,几种常见的异常情况如表 1 所示。
表 1 Python常见异常类型:
| 异常类型 | 含义 | 实例 |
|---|---|---|
| AssertionError | 当 assert 关键字后的条件为假时,程序运行会停止并抛出 AssertionError 异常 | >>> demo_list = ['C语言中文网'] >>> assert len(demo_list) > 0 >>> demo_list.pop() 'C语言中文网' >>> assert len(demo_list) > 0 Traceback (most recent call last): File "<pyshell#6>", line 1, in <module> assert len(demo_list) > 0 AssertionError |
| AttributeError | 当试图访问的对象属性不存在时抛出的异常 | >>> demo_list = ['C语言中文网'] >>> demo_list.len Traceback (most recent call last): File "<pyshell#10>", line 1, in <module> demo_list.len AttributeError: 'list' object has no attribute 'len' |
| IndexError | 索引超出序列范围会引发此异常 | >>> demo_list = ['C语言中文网'] >>> demo_list[3] Traceback (most recent call last): File "<pyshell#8>", line 1, in <module> demo_list[3] IndexError: list index out of range |
| KeyError | 字典中查找一个不存在的关键字时引发此异常 | >>> demo_dict={'C语言中文网':"c.biancheng.net"} >>> demo_dict["C语言"] Traceback (most recent call last): File "<pyshell#12>", line 1, in <module> demo_dict["C语言"] KeyError: 'C语言' |
| NameError | 尝试访问一个未声明的变量时,引发此异常 | >>> C语言中文网 Traceback (most recent call last): File "<pyshell#15>", line 1, in <module> C语言中文网 NameError: name 'C语言中文网' is not defined |
| TypeError | 不同类型数据之间的无效操作 | >>> 1+'C语言中文网' Traceback (most recent call last): File "<pyshell#17>", line 1, in <module> 1+'C语言中文网' TypeError: unsupported operand type(s) for +: 'int' and 'str' |
| ZeroDivisionError | 除法运算中除数为 0 引发此异常 | >>> a = 1/0 Traceback (most recent call last): File "<pyshell#2>", line 1, in <module> a = 1/0 ZeroDivisionError: division by zero |
提示:表中所列的异常类型无需死记硬背,只需进行简单了解即可。
当一个程序发生异常时,意味着该程序在执行过程中出现了非正常情况,无法继续按原逻辑执行。默认情况下,程序将会终止。为了避免程序直接退出,可以使用捕获异常的方式来获取异常的名称,并通过其他逻辑代码使程序继续运行。这种基于异常做出的逻辑处理机制被称为异常处理。
开发者可以利用异常处理机制对程序进行全面的控制。异常处理不仅用于管理正常的流程运行,还能在程序出错时执行必要的处理操作。这极大地提高了程序的健壮性和人机交互的友好性。
到此这篇关于Python常见异常类型处理的文章就介绍到这了,更多相关Python异常处理内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













