8-异常

每个异常都是某个类的实例。

>>> raise Exception('hyperdrive overload')
Traceback (most recent call last):
File "<stdin>", line 1, in ?
Exception: hyperdrive overload
Exception几乎所有的异常类都是从它派生而来的
AttributeError引用属性或给它赋值失败时引发
OSError操作系统不能执行指定的任务(如打开文件)时引发,有多个子类
IndexError使用序列中不存在的索引时引发,为
KeyError使用映射中不存在的键时引发,为 LookupError 的子类
NameError找不到名称(变量)时引发
SyntaxError代码不正确时引发
TypeError将内置操作或函数用于类型不正确的对象时引发
ValueError将内置操作或函数用于这样的对象时引发:其类型正确但包含的值不合适
ZeroDivisionError在除法或求模运算的第二个参数为零时引发

自定义异常

何创建异常类呢?就像创建其他类一样,但务必直接或间接地继承 Exception

捕获异常

捕获异常后,如果要重新引发它(即继续向上传播),可调用 raise 且不提供任何参数. 在 except 子句中使用不带参数的 raise 通常是不错的选择

要使用一个 except 子句捕获多种异常,可在一个元组中指定这些异常

finally 子句,可用于在发生异常时执行清理工作。

检查对象是否包含特定的属性时, try / except 也很有用

不呢么异常

如果你只想发出警告,指出情况偏离了正轨,可使用模块 warnings中的函数 warn

>>> from warnings import warn
>>> warn("I've got a bad feeling about this.")
__main__:1: UserWarning: I've got a bad feeling about this.
>>>
#警告只显示一次。如果再次运行最后一行代码,什么事情都不会发生。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值