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

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

https:///JackKoLing/python_notes_with_ten_days

python 异常转换为字符串 python异常类_自定义异常


俗话说:“好记性不如烂笔头”,多写写多记记,总不会错。多一些不为什么的坚持,少一些功利主义的追求。对于环境的配置,可以参考以下两篇:

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.