本文根据Python 3.6.5的官文Built-in Exceptions编写,不会很详细,仅对Python的内置异常进行简单(重难点)介绍——很多异常都可以从名称判断出其意义,罗列所有的内置异常。

在Python中,所有的异常都是派生自BaseException的类的实例。

内置异常可以被继承以定义新的异常类,推荐程序员基于Exception或它的子类去定义新的异常类,而不是基于BaseException,更多自定义异常类的信息请参考User-defined Exceptions

在except或finally从句中产生一个异常时,__context__自动被设置为最后异常捕获;如果新的异常没有被处理,回溯器(traceback,最终被显示出来)会包含最初的和最终的异常。

在产生一个异常时,隐含的异常上下文可以使用和raise一起使用的from来补充明确的原因:

raise new_exc from original_exc

跟随from的表达式必须是一个异常或None,它会被设置在产生的异常的__cause__属性中。(还有更多,翻译不了了)

P.S.上面的信息主要来自官文的翻译,和自己水平有关,并不完整,大家可以参考官文。

1.异常类基类

下面的这些异常类通常用于其它异常类的基类。

exception BaseException

所有异常类的基类,但并不意味着直接被用户定义的类继承(请使用Exception,直接继承又怎样?)

-args

提供给异常类构造器的参数。一些内置异常会期待一定数量的参数,并给这个元组的元素指定一个特殊的意义,而其它的异常类通常被调用时只需要提供一个错误信息的字符串即可。

-with_traceback(tb)

设置tb作为异常的新的回溯器,并返回异常对象。

通常用法如下(引用自官网):

 try:
...
except SomeException:
tb = sys.exc_info()[2]
raise OtherException(...).with_traceback(tb)

exception Exception

所有内置的、不会导致系统退出的异常类都派生自Exception,所有用户自定义的异常类也应该派生自Exception(第三次提到)。

exception ArithmeticError

所有算术方面的错误的基类,比如,OverflowError, ZeroDivisionError, FloatingPointError。

exception BufferError

缓存操作不能被执行时产生此异常。

exception LookupError

在映射对象使用关键字(key)(KeyError)、序列对象使用序号(index)(IndexError) 查找元素时,如果发生错误就会产生此异常的子类。可以直接使用codecs.lookup()产生此异常。

2.具体异常类

exception AssertionError

exception AttributeError

exception EOFError

exception FloatingPointError

exception GeneratorExit

exception ImportError

exception ModuleNotFoundError

exception IndexError

exception KeyError

exception KeyboardInterrupt

exception MemoryError

exception NameError

exception NotImplementedError

exception OSError([arg])
exception OSError(errno, strerror[, filename[, winerror[, filename2]]])

exception OverflowError

exception RecursionError

exception ReferenceError

exception RuntimeError

exception StopIteration

exception StopAsyncIteration

exception SyntaxError

exception IndentationError

exception TabError

exception SystemError

exception SystemExit

exception TypeError

exception UnboundLocalError

exception UnicodeError

exception UnicodeEncodeError

exception UnicodeDecodeError

exception UnicodeTranslateError

exception ValueError

exception ZeroDivisionError

exception EnvironmentError

exception IOError

exception WindowsError

2.1.OS异常

下面的异常类都是OSError的子类,它们会根据系统错误代码(the system error code,是什么?哪里找?)的值被产生。

exception BlockingIOError

exception ChildProcessError

exception ConnectionError

exception BrokenPipeError

exception ConnectionAbortedError

exception ConnectionRefusedError

exception ConnectionResetError

exception FileExistsError

exception FileNotFoundError

exception InterruptedError

exception IsADirectoryError

exception NotADirectoryError

exception PermissionError

exception ProcessLookupError

exception TimeoutError

3.报警类异常

下面的异常用于报警,更多信息可以查看warnings模块

exception Warning

exception UserWarning

exception DeprecationWarning

exception PendingDeprecationWarning

exception SyntaxWarning

exception RuntimeWarning

exception FutureWarning

exception ImportWarning

exception UnicodeWarning

exception BytesWarning

exception ResourceWarning

4.异常层次结构

来自官文。

BaseException
+-- SystemExit
+-- KeyboardInterrupt
+-- GeneratorExit
+-- Exception
+-- StopIteration
+-- StopAsyncIteration
+-- ArithmeticError
| +-- FloatingPointError
| +-- OverflowError
| +-- ZeroDivisionError
+-- AssertionError
+-- AttributeError
+-- BufferError
+-- EOFError
+-- ImportError
| +-- ModuleNotFoundError
+-- LookupError
| +-- IndexError
| +-- KeyError
+-- MemoryError
+-- NameError
| +-- UnboundLocalError
+-- OSError
| +-- BlockingIOError
| +-- ChildProcessError
| +-- ConnectionError
| | +-- BrokenPipeError
| | +-- ConnectionAbortedError
| | +-- ConnectionRefusedError
| | +-- ConnectionResetError
| +-- FileExistsError
| +-- FileNotFoundError
| +-- InterruptedError
| +-- IsADirectoryError
| +-- NotADirectoryError
| +-- PermissionError
| +-- ProcessLookupError
| +-- TimeoutError
+-- ReferenceError
+-- RuntimeError
| +-- NotImplementedError
| +-- RecursionError
+-- SyntaxError
| +-- IndentationError
| +-- TabError
+-- SystemError
+-- TypeError
+-- ValueError
| +-- UnicodeError
| +-- UnicodeDecodeError
| +-- UnicodeEncodeError
| +-- UnicodeTranslateError
+-- Warning
+-- DeprecationWarning
+-- PendingDeprecationWarning
+-- RuntimeWarning
+-- SyntaxWarning
+-- UserWarning
+-- FutureWarning
+-- ImportWarning
+-- UnicodeWarning
+-- BytesWarning
+-- ResourceWarning

Python基础:内置异常(未完待续)的更多相关文章

  1. python基础——内置函数

    python基础--内置函数  一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highl ...

  2. Day4-内置函数--未完待续,慢慢写

    内置函数:https://docs.python.org/3/library/functions.html?highlight=built#ascii 未完待续....

  3. python基础之内置异常对象

    前言 什么叫异常?简单来说就是程序运行发生了预计结果之外的情况从而导致程序无法正常运行.而python解释器将一些常见的异常情况在它发生时打包成一个异常对象,我们可以通过捕捉这些异常对象从而进行处理, ...

  4. 干!一张图整理了 Python 所有内置异常

    在编写程序时,可能会经常报出一些异常,很大一方面原因是自己的疏忽大意导致程序给出错误信息,另一方面是因为有些异常是程序运行时不可避免的,比如在爬虫时可能有几个网页的结构不一致,这时两种结构的网页用同一 ...

  5. 太干了!一张图整理了 Python 所有内置异常

    在编写程序时,可能会经常报出一些异常,很大一方面原因是自己的疏忽大意导致程序给出错误信息,另一方面是因为有些异常是程序运行时不可避免的,比如在爬虫时可能有几个网页的结构不一致,这时两种结构的网页用同一 ...

  6. python基础-内置函数详解

    一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highlight=built#ascii ...

  7. ASP.NET Core 2.2 基础知识(八) 主机 (未完待续)

    主机负责应用程序启动和生存期管理.共有两个主机 API : 1.Web 主机 : 适用于托管 Web 应用,基于 IWebHostBuilder ; 2.通用主机 : 适用于托管非 Web 应用. 基 ...

  8. python 基础内置函数表及简单介绍

    内建函数名 (表达形式) 主要作用 备注 abs(x) 返回一个X值得绝对值(x=int/float/复数) all(iterable) 如果 iterable 的所有元素均为 True(或 iter ...

  9. Python菜鸟之路:Python基础-内置函数补充

    常用内置函数及用法: 1. callable() def callable(i_e_, some_kind_of_function): # real signature unknown; restor ...

  10. Python 基础 内置函数 迭代器与生成器

    今天就来介绍一下内置函数和迭代器 .生成器相关的知识 一.内置函数:就是Python为我们提供的直接可以使用的函数. 简单介绍几个自己认为比较重要的 1.#1.eval函数:(可以把文件中每行中的数据 ...

随机推荐

  1. 【BZOJ3551】Peaks加强版(Kruskal重构树,主席树)

    [BZOJ3551]Peaks加强版(Kruskal重构树,主席树) 题面 BZOJ Description 在Bytemountains有N座山峰,每座山峰有他的高度h_i.有些山峰之间有双向道路相 ...

  2. Integer to Roman - LeetCode

    目录 题目链接 注意点 解法 小结 题目链接 Integer to Roman - LeetCode 注意点 考虑输入为0的情况 解法 解法一:从大到小考虑1000,900,500,400,100,9 ...

  3. 洛谷 P1341 无序字母对 解题报告

    P1341 无序字母对 题目描述 给定n个各不相同的无序字母对(区分大小写,无序即字母对中的两个字母可以位置颠倒).请构造一个有n+1个字母的字符串使得每个字母对都在这个字符串中出现. 输入输出格式 ...

  4. java插件之Lombok

    使用注释来减少Java中的重复代码 @NonNull - 或者:我怎么学会停止担心和喜欢上了NullPointerException. @Cleanup - 自动资源管理:安全地调用您的close() ...

  5. bzoj 1539: [POI2005]Dwu-Double-row

    假设一列交换表示为1,不换表示为0. 身高相同的两个人相当于给其中两列了一个限制条件,要么是两个必须相等,要么一个为零一个为一. 有了关系后我们就可以把每列当成一个点建边,边权为0表示必须相同,1为必 ...

  6. Levenshtein Distance莱文斯坦距离算法来计算字符串的相似度

    Levenshtein Distance莱文斯坦距离定义: 数学上,两个字符串a.b之间的莱文斯坦距离表示为levab(|a|, |b|). levab(i, j) = max(i, j)  如果mi ...

  7. timeshift 安装使用说明

    https://blog.csdn.net/hunter___/article/details/79751379 这里介绍一个可视化的备份软件:Timeshift,它不只能备份你的个人文件夹或应用程序 ...

  8. NATS_07:NATS之top工具监控以及测量调优工具

    概述 你可以使用 nats-top 来实现类似于 linux 中 top 命令的实时监控 nats 服务: 可以使用 nats 提供的工具来进行针对性的调优. 安装nats-top $ go get ...

  9. 面试心得与总结---BAT、网易、蘑菇街

    作者:Xoper.ducky链接:https://www.nowcoder.com/discuss/3043来源:牛客网 之前实习的时候就想着写一篇面经,后来忙就给忘了,现在找完工作了,也是该静下心总 ...

  10. Java基础-面向对象第二特征之继承(Inheritance)

    Java基础-面向对象第二特征之继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承的概述 在现实生活中,继承一般指的是子女继承父辈的财产.在程序 ...