Python常见异常分类与try-except处理机制详解

青禾
青禾
发布时间:2026-10-13| 7人浏览过
原创

本文系统梳理Python中常见的异常类型,包括AssertionError、AttributeError、KeyError等,并详细解析try-except-else-finally语句块的执行逻辑。通过四个代码示例,演示如何捕获断言失败、类型错误及IO错误,并强调finally块在资源清理中的关键作用,帮助开发者掌握Python异常处理的最佳实践。

在Python编程中,常见的异常类型主要可以归纳为以下几类:

1. AssertionError:当assert断言表达式的计算结果为False时触发此异常。

2. AttributeError:尝试访问对象上不存在的属性或方法时抛出。

3. IndexError:访问序列(如列表、元组)时索引超出有效范围引发。

4. KeyError:在字典(dict)中查找不存在的键值(key)时产生。

5. NameError:引用未定义的变量或名称时抛出。

6. OSError:由操作系统层面错误引发的异常,如文件操作失败等。

7. SyntaxError:代码语法结构不符合Python规范时抛出。

8. TypeError:对对象执行了不支持的操作类型时触发,通常涉及不同类型间的非法运算。

9. ZeroDivisionError:数学运算中除数为0时抛出。

如需查阅更多异常类型,可参考官方文档:

Python 2.7版本文档链接

Python 3.6版本文档链接

Python异常处理机制:

示例1:异常的最基础捕获方式

#!/usr/bin/python 
#coding:utf8 
 
#try与except结合用法 
 
a = 1 
b = 2 
 
try : 
  assert a > b     #如果a>b判断为假时将抛出AssertionError异常 
except AssertionError:  #如果捕获到AssertionError异常将执行except下面的代码块 
  print ( "a<b" ) 

上述代码的输出结果为 'a<b'。这是因为在断言语句中 'a > b' 的判断结果为假,从而触发了AssertionError异常。程序捕获该异常后,立即执行except代码块中的打印语句。

示例2:使用多个except子句捕获不同异常

#!/usr/bin/python 
#coding:utf8 
 
#try与多个except结合用法,在try代码块中依次执行,只要捕获到异常就停止执行 
 
a = 1 
b = 2 
c = "1" 
 
try : 
  assert a < b 
  d = a + c 
except AssertionError: 
  print ( "a<b" ) 
except TypeError,e:   #这里的 e 为异常信息 
  print (e) 

上述执行结果为 'unsupported operand type(s) for +: 'int' and 'str'',表示不支持整型与字符串相加。由于前面的断言 'a < b' 为真,不会抛出AssertionError,程序继续执行后续语句。此时执行 'a + c' 引发了TypeError异常,程序捕获该异常并执行对应的except TypeError代码块。变量 'e' 代表异常的具体错误信息,因此最终输出打印出该错误详情。

示例3:结合try、except与else子句的使用

#!/usr/bin/python 
#coding:utf8 
 
a = 1 
b = 2 
c = "1" 
 
try : 
  assert a < b 
  d = a + b 
except AssertionError,e: 
  print ( "a<b" ) 
except TypeError,e: 
  print (e) 
else :          #当try代码块中执行没有发现任何异常的时候执行这里的语句 
  print ( "Program execution successful" ) 

上述代码执行结果为 'Program execution successful'。

示例4:结合try、except、else与finally子句(其中else子句可选)

#!/usr/bin/python 
#coding:utf8 
 
#try与多个except结合用法,在try代码块中依次执行,只要捕获到异常就停止执行 
 
a = 1 
b = 2 
c = "1" 
 
try : 
  assert a < b 
  d = a + b 
  txt = open ( "/root/1.txt" ) 
  txt.write( "test" )    #上面打开文件默认以r方式打开,这里会抛出IOError异常 
except AssertionError,e: 
  print ( "a<b" ) 
except TypeError,e:   #这里的 e 为异常信息 
  print (e) 
except IOError,e: 
  print (e) 
else :          #当没有发现任何异常的时候执行这里的语句 
  print ( "Program execution successful" ) 
finally :         
#不管有没有民常都会执行finally代码块中的语句,通常用在打开文件,在文件处理过程过中出异常退出,这时候文件没有关闭 
  txt.close() 

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。