Python基础:内置异常(未完待续)
本文根据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基础:内置异常(未完待续)的更多相关文章
- python基础——内置函数
python基础--内置函数 一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highl ...
- Day4-内置函数--未完待续,慢慢写
内置函数:https://docs.python.org/3/library/functions.html?highlight=built#ascii 未完待续....
- python基础之内置异常对象
前言 什么叫异常?简单来说就是程序运行发生了预计结果之外的情况从而导致程序无法正常运行.而python解释器将一些常见的异常情况在它发生时打包成一个异常对象,我们可以通过捕捉这些异常对象从而进行处理, ...
- 干!一张图整理了 Python 所有内置异常
在编写程序时,可能会经常报出一些异常,很大一方面原因是自己的疏忽大意导致程序给出错误信息,另一方面是因为有些异常是程序运行时不可避免的,比如在爬虫时可能有几个网页的结构不一致,这时两种结构的网页用同一 ...
- 太干了!一张图整理了 Python 所有内置异常
在编写程序时,可能会经常报出一些异常,很大一方面原因是自己的疏忽大意导致程序给出错误信息,另一方面是因为有些异常是程序运行时不可避免的,比如在爬虫时可能有几个网页的结构不一致,这时两种结构的网页用同一 ...
- python基础-内置函数详解
一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highlight=built#ascii ...
- ASP.NET Core 2.2 基础知识(八) 主机 (未完待续)
主机负责应用程序启动和生存期管理.共有两个主机 API : 1.Web 主机 : 适用于托管 Web 应用,基于 IWebHostBuilder ; 2.通用主机 : 适用于托管非 Web 应用. 基 ...
- python 基础内置函数表及简单介绍
内建函数名 (表达形式) 主要作用 备注 abs(x) 返回一个X值得绝对值(x=int/float/复数) all(iterable) 如果 iterable 的所有元素均为 True(或 iter ...
- Python菜鸟之路:Python基础-内置函数补充
常用内置函数及用法: 1. callable() def callable(i_e_, some_kind_of_function): # real signature unknown; restor ...
- Python 基础 内置函数 迭代器与生成器
今天就来介绍一下内置函数和迭代器 .生成器相关的知识 一.内置函数:就是Python为我们提供的直接可以使用的函数. 简单介绍几个自己认为比较重要的 1.#1.eval函数:(可以把文件中每行中的数据 ...
随机推荐
- Mybatis笔记八:MyBatis中#{}和${}的区别
先给大家介绍下MyBatis中#{}和${}的区别,具体介绍如下: 1. $将传入的数据直接显示生成在sql中 2. #方式能够很大程度防止sql注入. 3.$方式无法防止Sql注入. 4.$方式一般 ...
- 前端学习 -- Css -- 属性选择器
属性选择器:根据元素的属性选择指定元素 语法:[属性名] 选取含有指定属性的元素 [属性名="属性值"]:选取属性值等于指定值的元素 [属性名^="属性值"]: ...
- 解题:BZOJ 2673 World Final 2011 Chips Challenge
题面 数据范围看起来很像网络流诶(滚那 因为限制多而且强,数据范围也不大,我们考虑不直接求答案,而是转化为判定问题 可以发现第二个限制相对好满足,我们直接枚举这个限制就可以.具体来说是枚举所有行中的最 ...
- Java利用poi生成word(包含插入图片,动态表格,行合并)
转(小改): Java利用poi生成word(包含插入图片,动态表格,行合并) 2018年12月20日 09:06:51 wjw_11093010 阅读数:70 Java利用poi生成word(包含插 ...
- HDU--4099
题目: Revenge of Fibonacci 原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4099 分析:字典树的应用.在求Fibonacci的前 ...
- HDU 6006 状压dp
Engineer Assignment Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- ElasticStack系列之十二 & 搜索结果研究
问题 使用 ElasticSearch 做搜索 时,比如用户输入 --> 柠檬,搜出来的结果 --> 柠檬汽水,柠檬味牙膏等在前面,真正想要的水果那个 柠檬 在后面.已经在中文分词中加了 ...
- 图论:LCA-欧拉序
#include<cmath> #include<vector> #include<cstdio> #include<cstring> #include ...
- android 低功耗蓝牙使用
参考链接:http://blog.csdn.net/xubin341719/article/details/38584469 1.android 手机的低功耗蓝牙,又称BLE :BLE在andriod ...
- jdk1.8.0_45源码解读——LinkedList的实现
jdk1.8.0_45源码解读——LinkedList的实现 一.LinkedList概述 LinkedList是List和Deque接口的双向链表的实现.实现了所有可选列表操作,并允许包括null值 ...