python允许我们在程序中手动设置异常,使用 raise 语句即可。
raise 语句的基本语法格式为:
raise [exceptionName [(reason)]]
其中,用 [] 括起来的为可选参数,其作用是指定抛出的异常名称,以及异常信息的相关描述。如果可选参数全部省略,则 raise 会把当前错误原样抛出;如果仅省略 (reason),则在抛出异常时,将不附带任何的异常描述信息。
raise 语句引发的异常通常用 try except(else finally)异常处理结构来捕获并进行处理。
示例代码1:
try:
a = input("输入一个数:")
# 判断用户输入的是否为数字
if (not a.isdigit()):
raise ValueError("a 必须是数字")
except ValueError as e:
print("引发异常:", repr(e))
print("引发异常:", str(e))
运行结果:
注意: raise 抛出的异常会被 try 捕获,并由 except 块进行处理。
更多关于repr()用法详见博文:python中repr()函数用法详解_IT
示例代码2:
try:
a = input("输入一个数:")
if (not a.isdigit()):
raise ValueError("a 必须是数字")
except ValueError as e:
print("引发异常:", repr(e))
raise
运行结果:
注意:这里重点关注位于 except 块中的 raise,由于在其之前我们已经手动引发了 ValueError 异常,因此这里当再使用 raise 语句时,它会再次引发一次。
示例代码3:
try:
a = input("输入一个数:")
if (not a.isdigit()):
raise
except RuntimeError as e:
print("引发异常:", repr(e))
运行结果:
注意:当在没有引发过异常的程序使用无参的 raise 语句时,它默认引发的是 RuntimeError 异常。