中国史之【盘庚迁殷】:
商朝建立后屡次迁都。盘庚即位后,自奄(今山东曲阜)迁都至殷(今河南安阳小屯),开垦荒地,长期定居下来。稳定的局面挽回了九世之乱以来商朝的衰落之势。
-来源:全历史APP
今天讲python的标准异常类。有需要的也可以直接去我的github查看全部笔记:
https://github.com/JackKoLing/python_notes_with_ten_days
俗话说:“好记性不如烂笔头”,多写写多记记,总不会错。多一些不为什么的坚持,少一些功利主义的追求。对于环境的配置,可以参考以下两篇:
- win10版 @小保,公众号:CV之道
【深度学习环境配置】手把手实战配置深度学习环境(win10版) - Linux版 @小保,公众号:CV之道
【深度学习环境配置】手把手实战配置深度学习环境(Ubuntu20.04版)
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的解释器环境。
我叫小保,一名计算机视觉爱好者、学习者、追随者,欢迎关注我一起学习。
![](https://i-blog.csdnimg.cn/blog_migrate/37d6a533cafcd7c7f3a6d3d4d64ac915.png)