python中能主动引发异常的是_python--异常处理-主动引发异常-自定义异常类

一.主动引发异常

并非只有在程序运行出错时才可以引发异常,python允许在代码中使用raise或assert语句主动引发异常。

1.raise语句

1.1基本格式:

raise 异常类名 #创建异常类的实例对象,并引发异常

raise 异常类实例对象 #引发异常类实例对象对应的异常

raise #重新引发刚刚发生的异常

Python执行raise语句时,会引发异常并传递异常类的实例对象。

1.2.1用类名引发异常

raise语句中指定异常类名时,创建该类的实例对象,然后引发异常。

raise IndexError #引发异常

1.2.2用异常类实例对象引发异常

可以直接使用异常类实例对象来引发异常。

x = IndexError() #创建异常类的对象

raise x #引发异常

1.2.3传递异常

不带参数的raise 语句可再次引发刚刚发生过的异常,其作用就是向外界传递异常。

try:

raise IndexError #引发 IndexError 异常

except:

print("出错")

raise#再次引发 IndexError 异常

1.2.4指定异常信息

在使用raise语句引发异常时,可以为异常类指定描述信息。

1.3异常链:异常引发异常

可以使用raise…from…语句,使用异常来引发另一个异常。

2.assert语句

2.1基本格式:

assert 测试表达式,data

assert语句在“测试表达式”的值为假时,引发AssertionError异常,data作为异常描述信息。

二.自定义异常类

自定义异常类可以提供常规异常处理之外的自定义操作。

异常类的超类:

所有的异常类都有共同的超类:BaseException和Exception

1.1BaseException类

BaseException类是所有异常类的顶级超类。不能直接继承BaseException类来定义自己的异常类。BaseException类唯一的子类就是Exception类。BaseException类为子类提供了默认的打印和状态保持行为。

在创建异常类实例对象时,可以用一个字符串作为异常描述信息。在打印时,显示异常信息描述。

实际上,在创建异常类实例对象时,可以提供多个参数。如果子类没有覆盖继承自己BaseException类的构造方法,所有的参数均会以元组的形式保持在args属性中。

1.2Exception类

Exception类是其他所有python内置异常类的超类,除了GeneratorExit、KeyboardInterrupt和SystemExit。

在使用try语句处理异常时,可指定捕捉Exception异常,而不是空的except。这样可以更明确的捕捉异常,并通过异常实例对象来获得更多信息。

2.创建自定义异常

如果需要在程序中使用raise语句引发自定义的异常,则可使用Exception类或其他内置的预定义异常类型作为超类来定义自己的异常类。

class test(Exception):pass#定义一个空的异常类,超类为Exception

raise test(" ")#引发自定义异常

class test(IndexError):pass #定义一个空的异常类,超类为IndexError

raise test(" ") #引发自定义异常

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值