【python学习】python的常见异常类

中国史之【盘庚迁殷】:
商朝建立后屡次迁都。盘庚即位后,自奄(今山东曲阜)迁都至殷(今河南安阳小屯),开垦荒地,长期定居下来。稳定的局面挽回了九世之乱以来商朝的衰落之势。
-来源:全历史APP

今天讲python的标准异常类。有需要的也可以直接去我的github查看全部笔记:

https://github.com/JackKoLing/python_notes_with_ten_days
在这里插入图片描述
俗话说:“好记性不如烂笔头”,多写写多记记,总不会错。多一些不为什么的坚持,少一些功利主义的追求。对于环境的配置,可以参考以下两篇:

1 、异常对象

  • python自身引发的所有异常都是Exception的子类实例,而Exception是从BaseException继承的新式类
  • 所以,捕获BaseException异常,能包括所有异常
try:
    print(3/0)
except BaseException:
    print("Exception occurs.")
>>>
Exception occurs.
try:
    f = open('a.txt','r')
except BaseException:
    print("Exception occurs.")
>>>
Exception occurs

2 、标准异常分类

大多的标准异常都是由BaseException派生的,有三个抽象的子类:
1、ArithmeticError: 由于算术错误而引发的异常基类,如:OverflowError, ZeroDivisionError, FloatingPointError
2、LookupError:容器在接收到一个无效键或索引时引发的异常基类,如:IndexError, KeyError
3、EnvironmentError:由于外部原因而导致的异常基类,如:IOError, OSError, WindowsError

3、常见的标准异常类

  • AssertionError 断言语句错误
  • AttributeError 属性引用或赋值错误
  • FloatingPointError 浮点型运算错误
  • IOError I/O操作失败
  • ImportError import语句不能找到要导入的模块,或者不能找到该模块特别请求的名称
  • IndentationError 解析器遇到了一个由于错误的缩进而引发的语法错误
  • IndexError 用来索引序列的整数超出了范围,就是下标错误
  • KeyError 用来索引映射的键不在映射中
  • KeyboardInterrupt 用户按了中断键(ctrl+c、ctrl+break或delete键)
  • MemoryError 爆内存
  • NameError 引用了一个不存在的变量名
  • NotImplementedError 由抽象基类引发的异常,用于指示一个具体的子类必须覆盖一个方法
  • OSError 由模块os中的函数引发的异常,用来指示平台相关的错误
  • OverflowError 整数运算的结果太大导致溢出
  • SyntaxError 语法错误
  • SystemError python本身或某些扩展模块中的内部错误
  • TypeError 对某对象执行了不支持的操作
  • UnboundLocalError 引用未绑定值的本地变量
  • UnicodeError 在Unicode的字符串之间进行转换时发生的错误
  • ValueError 应用于某个对象的操作或函数,这个对象具有正确的类型,但确有不适当的值
  • WindowsError 模块os中的函数引发的异常,用来指示与Windows相关的错误
  • ZeroDivisionError 除数为0的错误

4、自定义异常类

  • 可从自定义异常类和标准异常类进行多重继承
class CustomAttributeError(CustomException, AttributeError):
  • python标准库中的许多模块都定义了自己的异常类,如socket中的socket.error,等同于自定义的异常类

5、断言assert语句

  • assert语句相当于自定义异常(手动触发异常),用于在程序中引入调试代码
  • 语句为:assert condition[, expression]
  • 如果条件满足,则assert不做任何操作。反之使用expression作为参数来实例化AssertionError并引发结果实例
  • 若运行python时不使用-O选项,则__debug__内置变量为True。反之为False,编译器不为assert语句生成代码
  • 所以语句相当于:先判断__debug__,再判断condition。若为not condition, 则raise AssertionError,
  • 简单来说,就是assert后面的条件语句不满足,就会引发异常。
  • 常用来判断某个向量的shape是否正确,确保程序阶段性正常
x = 1
assert x == 0,"assert error."
>>>

---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
<ipython-input-3-71d4300abcd1> in <module>
      1 x = 1
----> 2 assert x == 0,"assert error."

AssertionError: assert error.

【声明】:学习笔记基于互联网上各种学习资源的个人整理。

以上是本期内容,下期介绍python的解释器环境。

我叫小保,一名计算机视觉爱好者、学习者、追随者,欢迎关注我一起学习。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JackkoLing

感谢你的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值