您的“关注”和“点赞”,是信任,是认可,是支持,是动力…
如意见相佐,可留言。
本人必将竭尽全力试图做到准确和全面,终其一生进行修改补充更新。
文章目录
1 Python raise 语句概述
在 Python 中使用 raise
语句,可以在程序的指定位置手动抛出一个异常。
使用语法格式如下所示:
raise [exceptionName[(reason)]]
等价于
raise # 该语句引发当前上下文中捕获的异常(比如在 except 块中),或默认引发 RuntimeError 异常。
raise exceptionName # 表示引发执行类型的异常。
raise exceptionName(reason) # 在引发指定类型的异常的同时,附带异常的描述信息。
对以上格式说明,
[exceptionName[(reason)]]
:方括号[]括起来的为可选参数。exceptionName
:指定抛出的异常名称。它必须是一个异常的实例或者是异常的类(也就是 Exception 的子类)。常见异常类型请参见博文《Python 常见异常类型介绍》。reason
:异常信息的相关描述。如果不写此参数,抛出异常时,将没有任何异常描述信息。- 可选参数都省略:raise 语句会把当前错误原样抛出。
举例如下所示:
例一,无参 raise
>>> raise
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
raise
RuntimeError: No active exception to reraise
例二,raise exceptionName
>>> raise ZeroDivisionError
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
raise ZeroDivisionError
ZeroDivisionError
例三,raise exceptionName(reason)
>>> raise ZeroDivisionError('除数不能为零')
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
raise ZeroDivisionError('除数不能为零')
ZeroDivisionError: 除数不能为零
2 处理手动抛出的异常
raise 语句引发的异常通常用 try except(else finally)
异常处理结构来捕获并进行处理。
使用 raise 语句引发异常,程序的执行是正常的,手动抛出的异常并不会导致程序崩溃。
举例如下所示:
try:
num1 = int(input('输入一个被除数 num1:')) # 用户输入一个被除数
num2 = int(input('输入一个除数 num2:')) # 用户输入一个除数
result = num1 / num2
# 判断用户输入的除数是否为零
if (num2 == 0):
raise ZeroDivisionError
except ZeroDivisionError as e:
print('引发异常:', repr(e))
运行结果:
输入一个被除数 num1:6
输入一个被除数 num2:0
引发异常: ZeroDivisionError('division by zero')