Python异常处理、自定义异常与断言机制详解
本文深入解析Python中的异常处理机制,涵盖try、except、else和finally语句的具体用法,以及如何捕获多个异常。同时介绍如何继承Exception类创建自定义异常,并详细阐述assert断言在程序调试中的应用场景与原理,帮助开发者提升代码健壮性。
Python异常处理概述
本文详细解析Python中异常处理、自定义异常以及断言(assert)的原理与具体用法,旨在为读者提供清晰的参考指南。
- 当程序运行过程中遇到非预期状况时,系统会抛出异常。例如,
函数仅能处理可转换为整型的对象,若传入无法转换的数据类型,程序将报错并抛出异常。 - Python中常见的内置异常类型包括以下几种:
常见内置异常类型
ValueError:当传入的参数值无效或错误时触发
。
TypeError:对数据类型执行了不支持的操作时触发
。
IndexError:访问序列索引时,该索引超出范围
。
NameError:尝试使用尚未定义的变量时触发
。
如需了解更详尽的异常类型,可查阅Python官方文档
,建议开发者定期阅读官方文档以掌握最新规范。
- Python通过try、except、finally和else关键字组合来处理异常,各部分功能如下:

try-except-else-finally语法详解
try:
s=input("请输入要int的字符串:")
i=int(s)
except ValueError as e:
print(e)
else:
print("这里是当没有发生异常时的操作")
finally:
print("这里是即使发生异常也会执行的代码")
"""第一次运行结果:
请输入要int的字符串:123
这里是当没有发生异常时的操作
这里是即使发生异常也会执行的代码
"""
"""第二次运行结果
请输入要int的字符串:abc
invalid literal for int() with base 10: 'abc'
这里是即使发生异常也会执行的代码
"""
- 在一条except语句中可以捕获多个异常,但必须将多个异常类型用括号包裹。需要注意的是,由于异常会导致程序流程终止,因此即使列出了多个异常,实际也只会捕获到第一个发生的异常,故只需一个变量来接收异常对象即可:
。 - 若无法确定具体会抛出何种异常,可以使用基类Exception(更底层可使用BaseException)进行捕获。通常建议将Exception处理放在所有特定except子句的最后,以确保兜底:
。
- 使用raise关键字可以主动抛出自定义的异常信息
。 - 只需继承Exception类,即可定义属于自己的异常类:
。
自定义异常类的实现
class myException(Exception):
def __init__(self,msg):
self.message=msg
def __str__(self):###这里就是异常的字符串信息
return self.message
try :
raise myException("我的异常")#py3
except myException as e:
print(e)
"""
结果:
我的异常
"""
- 断言的意义在于:与其让程序在运行深处崩溃,不如在出现错误条件时立即终止(例如,老司机开车前应先判断路况,而非开出去才发现交警在等待)。
assert断言机制与应用
police=False
assert police ==False
print("老司机开车啦,呜呜呜")
police=True
assert police ==False
print("老司机开车啦,呜呜呜")#报错,AssertionError
更多关于Python的实用技巧,可查看本站专题:《Python入门与进阶经典教程》、《Python字符串操作技巧汇总》、《Python列表(list)操作技巧总结》、《Python编码操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》及《Python文件与目录操作技巧汇总》。
希望本文所述内容能对您的Python程序设计工作有所帮助。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









