使用raise语句时,会以以下基本格式显式触发异常:
出现raise异常类#异常时,会隐式创建类对象
抛出与raise异常类对象#异常类实例对象相对应的异常
raise #使刚发生的异常再次发生
在所述格式中,第一方法和第二方法是对等的,它们都导致指定的异常系统对象。 但是,第一种方法隐式创建异常类的实例,第二种形式是最常见的,它直接提供异常类的实例。 第三种方法用于使刚发生的异常再次发生。
1、使用类名引起异常
如果raise语句指定异常的类名,则会创建该类的实例对象并抛出异常。 例如:
raise索引错误
程序的执行结果如下。
跟踪后退(mostrecentcalllast ) :
file ' c :usersitcastpycharmprojectschapter 09 异常. py ',line 1,in
raise索引错误
索引错误
2、使用异常系统实例引起异常
显式创建异常类的实例,并直接使用该实例对象抛出异常。 例如:
index _ error=索引错误(
raise index_error
程序的执行结果为以下:
跟踪后退(mostrecentcalllast ) :
file ' c :usersitcastpycharmprojectschapter 09 异常. py ',line 2,in
raise索引错误
索引错误
3 .传递异常
无参数的raise语句再次触发刚发生的异常,并向外界传达异常。
例如:
try:
raise索引错误
except:
打印(错误) ) ) )。
雷西
在上面的示例中,在try中使用raise抛出IndexError异常,然后程序跳转到except子句并执行
输出语句,使用raise再次引发最近发生的异常,程序出现错误并中止执行。 mldxh的结果如下。
跟踪后退(mostrecentcalllast ) :
file ' c :usersitcastpycharmprojectschapter 09 异常. py ',line 2,in
raise索引错误
索引错误
搞错了
4 .指定异常的说明信息
使用raise语句抛出异常时,还可以在异常类中指定说明信息。 例如:
raise IndexError (索引下标超出范围) )。
在上面的示例中,在抛出异常类时传递了自定义描述信息。 程序的执行结果为以下:
d :bili _ newscriptspython.exec :/users/itcast/pycharmprojects/bili _ new/test.py
跟踪后退(mostrecentcalllast ) :
file ' c :usersitcastpycharmprojectschapter 09 异常. py ',line 1,in
raise IndexError (索引下标超出范围) )。
索引error :索引下标超出范围
5 .异常引起的异常
如果要将另一个异常抛出到异常,可以使用raise-from语句实现。 例如:
try:
编号器
exceptexceptionasexception :
raise IndexError (下标超出范围) from exception
在上面的示例中,try只定义了变量number,而未分配值,从而导致名称错误的差异
程序通常跳至except子句并运行。 except子句捕获所有异常,使用raise-from语句抛出NameError异常,然后抛出“超出范围的下标”异常。 程序的执行结果为以下:
跟踪后退(mostrecentcalllast ) :
file ' c :usersitcastpycharmprojectschapter 09 异常. py ',line 1,in
raise IndexError (索引下标超出范围) )。
索引error :索引下标超出范围
你觉得你喜欢吗