使用raise语句能显式地触发异常,基本格式如下:
raise异常类#引发异常时会隐式地创建类对象
raise异常类对象#引发异常类实例对象对应的异常
raise#重新引发刚刚发生的异常
在上述格式中,第1种和第2种对等的,都会引发指定异常类对象。但,第1种隐式地创建了异常类的实例,而第2种形式最常见的,直接会一个异常类的实例。第3种用于重新引发刚刚发生的异常。
1、使用类名引发异常
当raise语句指定异常的类名时,会创建该类的实例对象,然后引发异常。例如:
raiseIndexError
程序运行的结果如下:
Traceback(mostrecentcalllast):
File"C:\Users\itcast\PycharmProjects\Chapter09\异常.py",line1,in<module>
raiseIndexError
IndexError
2、使用异常类的实例引发异常
通过显式地创建异常类的实例,直接使用该实例对象来引发异常。例如:
index_error=IndexError()
raiseindex_error
程序运行的结果如下:
Traceback(mostrecentcalllast):
File"C:\Users\itcast\PycharmProjects\Chapter09\异常.py",line2,in<module>
raiseIndexError
IndexError
3.传递异常
不带任何参数的raise语句,可以再次引发刚刚发生过的异常,作用就向外传递异常。
例如:
try:
raiseIndexError
except:
print("出错了")
raise
上述示例中,try里面使用raise抛出了IndexError异常,程序会跳转到except子句中执行
输出打印语句,然后使用raise再次引发刚刚发生的异常,导致程序出现而终止运行。程运行的结果如下:
Traceback(mostrecentcalllast):
File"C:\Users\itcast\PycharmProjects\Chapter09\异常.py",line2,in<module>
raiseIndexError
IndexError
出错了
4.指定异常的描述信息
当使用raise语句抛出异常时,还能给异常类指定描述信息。例如:
raiseIndexError("索引下标超出范围")
上述示例中,在抛出异常类时传入了自定义的描述信息。程序的运行结果如下:
D:\bili_new\C:/Users/itcast/PycharmProjects/bili_new/test.py
Traceback(mostrecentcalllast):
File"C:\Users\itcast\PycharmProjects\Chapter09\异常.py",line1,in<module>
raiseIndexError("索引下标超出范围")
IndexError:索引下标超出范围
5.异常引发异常
如果要在异常中抛出另外一个异常,可以使用raise-from语句实现。例如:
try:
number
exceptExceptionasexception:
raiseIndexError("下标超出范围")fromexception
上述示例中,try里面只定义了变量number,并没有为其赋值,所以会引发NameError异
常,使得程序跳转到except子句中执行。except子句能捕捉所有的异常,并且使用raise-from语句抛出NameError异常后再抛出“下标超出范围”的异常。程序的运行结果如下:
Traceback(mostrecentcalllast):
File"C:\Users\itcast\PycharmProjects\Chapter09\异常.py",line1,in<module>
raiseIndexError("索引下标超出范围")
IndexError:索引下标超出范围
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论