raise的应用场景:
是否可以在程序的指定位置手动抛出一个异常?
答案是肯定的,Python 允许我们在程序中手动设置异常,使用 raise 语句即可。
你可能会疑惑,从来都是想方设法地让程序正常运行,怎么还要手动设置异常呢?
首先要分清楚程序发生异常和程序执行错误,它们完全是两码事:程序由于错误导致的运行异常,是需要程序员想办法解决的;但还有一些异常,是程序正常运行的结果,比如用 raise 手动引发的异常。
raise的基本语法结构raise exceptionName [(reason)]
exceptionName :异常名称,须是定义好的错误类型,或本身存在的错误类型;
reason:异常描述;
其中,用 [] 括起来的为可选参数,如果可选参数全部省略,则 raise 会把当前错误原样抛出;如果仅省略 (reason),则在抛出异常时,将不附带任何的异常描述信息。
建议使用方式:
# 方式一
raise IOError
# 方式是二
raise TypeError('输入参数类型错误')
应用示例:
我们手动让程序引发异常,并不是为了让其崩溃。事实上,raise 语句引发的异常通常用 try except(else finally)异常处理结构来捕获并进行处理。
try:
a = input("输入一个数:")
#判断用户输入的是否为数字
if(not a.isdigit()):
raise ValueError("输入的%s不是数字,要求必须输入数字"%(a))
except ValueError as e:
print("引发异常:", repr(e))
print("输错了,异常发生,本程序也没有崩溃,正常运行到结束!!!")
参考文章:
1.python raise超详细。