本文根据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. 一种KEIL中定义过的变量在使用中提示未定义的情况

    [环境] > KEIL5.25 > win10 > @2018-4-23 [问题] 头文件互包含导致的错误(使用了另一文件的类型定义) 文件<fileA.h> <f ...

  2. 【BZOJ4869】【SHOI2017】相逢是问候

    Description BZOJ传送门 Solution 这题涉及到指数嵌套堆叠,可能可以用欧拉函数解决. 试想一个数\(a_i\)经过\(k\)次操作后会变成什么? \[ k个c\;\; \begi ...

  3. 彻底解决mac下terminal路径显示问题

    mac 配色 mac shell配色  ~/.bash_profile是bash shell中当前登录用户的配置文件.bash是“终端”中默认的shell. alias ls=”ls -G”是给”ls ...

  4. 加快android studio 编译速度

    工程build一次太慢  经过各种搜索 整合以下 仅供参考 1.在下列目录中新建 gradle.properties 文件 /home//.gradle/ (Linux) /Users//.gradl ...

  5. Android之断点续传下载(转)

    Android之断点续传下载http://www.cnblogs.com/zxl-jay/archive/2011/10/09/2204195.html

  6. bzoj 1814: Ural 1519 Formula 1 插头dp经典题

    用的括号序列,听说比较快. 然并不会预处理,只会每回暴力找匹配的括号. #include<iostream> #include<cstdio> #include<cstr ...

  7. Maven问题合集

    背景:总结maven使用过程中的相关问题,方便以后查询! 1 问题汇总 今天在导入github上下载的maven项目时候,出现了一堆错误,一时间不知道该如何下手. 根据错误提示,发现是一些依赖的jar ...

  8. 特征选择实践---python

    作者:城东链接:https://www.zhihu.com/question/28641663/answer/110165221来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...

  9. Java入门:一些初学者需要掌握的基础算法程序——二分查找

    本例演示如何通过二分算法查找一个链表中的指定元素. import java.util.Scanner; class BinarySearchExample { public static void m ...

  10. thinkphp3 行为(behavior)分析和基本使用

    1. 名词解析 官方解析: 来自 http://document.thinkphp.cn/manual_3_2.html#behavior_extend 行为(Behavior)是一个比较抽象的概念, ...