Python标准库系列:我们讨厌的异常

对于新手程序员来说,难免会遇到头疼的异常,面对满屏的错误信息瞬间懵X,今天就来好好的了解一下Python的那些异常,妈妈再也不用担心我出错啦。

BaseException

这是所有内置异常的基类,但是用户自定义异常时应该继承Exception。

+-- SystemExit

sys.exit()函数引发此异常。它继承BaseException而不是Exception,因为它不会被捕获的代码导致的异常。sys.exit()可以接受参数。如果该值是整数,则指定系统退出状态,就像C语言的main函数最后return的值一样;如果是None,则退出状态为零;如果它有另一种类型(如字符串),则打印对象的值,退出状态为1。

+-- KeyboardInterrupt

在程序运行期间,当用户按下中断键(正常Control-C或Control+Z)时触发。

+-- GeneratorExit

当生成器或协程关闭时引发;generator.close()和coroutine.close()。编程时很少遇到它,除非显式的捕获它。

+-- Exception

所有内置的,非系统退出的异常都是从这个类派生的。所有用户定义的异常也应该从该类派生。

+-- StopIteration

由内置函数next()和迭代器的__next__()方法引发,表明迭代器耗尽不再生成其他项。

+-- StopAsyncIteration

必须通过异步迭代器对象的__anext__()方法引发以停止迭代。版本3.5中的新功能。

+-- ArithmeticError

各种算术错误引发的异常:OverflowError,ZeroDivisionError,FloatingPointError。

+-- FloatingPointError

在浮点操作失败时触发。

+-- OverflowError

当算术运算的结果太大而无法表示时引发。由于python整数可以根据内存一直扩展,现在设备内存都很大,整数很少引发这个异常。由于C中缺少浮点异常处理的标准化,因此不检查大多数浮点运算。

+-- ZeroDivisionError

当除法或模运算的第二个参数为零时引发。

+-- AssertionError

assert声明失败时引发。

+-- AttributeError

当属性引用或赋值失败时引发。(当一个对象完全不支持属性引用或属性赋值时TypeError)。

+-- BufferError

无法执行与缓冲区相关的操作时引发。

+-- EOFError

当input()函数在没有读取任何数据的情况下达到文件结束条件(EOF)时引发。

+-- ImportError

当import语句试图加载模块时出现错误引发。

+-- ModuleNotFoundError

无法定位模块时ImportError引发的子类import。新手经常遇到这个异常,通常是因为没有安装该模块,使用pip install module_name解决,如果是引用用户自己的模块则要检查路径是否正确。

+-- LookupError

当映射或序列上使用的键或索引无效时引发的异常的基类:IndexError,KeyError。

+-- IndexError

当序列下标超出范围时引发。经常遇到的是列表或元组的下标超过列表长度

+-- KeyError

在现有键集中找不到映射(字典)键时引发,通常是字典引用的键不存在,通常需要在引用之前用haskey做检查。

+-- MemoryError

当操作耗尽内存时引发。

+-- NameError

未找到本地或全局名称时引发。通常是变量未定义之前被调用导致的。

+-- UnboundLocalError

引用函数或方法中的局部变量,但没有值绑定到该变量时引发。

+-- OSError

当系统函数返回与系统相关的错误时会引发此异常,包括I / O失败,例如“找不到文件”或“磁盘已满”。

+-- BlockingIOError

当阻塞操作非阻塞操作的对象(例如套接字)时引发。

+-- ChildProcessError

在子进程上的操作失败时引发。

+-- ConnectionError

与连接相关的问题的基类。子类是BrokenPipeError,ConnectionAbortedError,ConnectionRefusedError和ConnectionResetError。

+-- BrokenPipeError

尝试在管道上写入而另一端已关闭时尝试写入的子类,或尝试写入已关闭以进行写入的套接字。

+-- ConnectionAbortedError

连接尝试被对方中止时引发的子类。

+-- ConnectionRefusedError

当对方拒绝连接尝试时引发的子类。

+-- ConnectionResetError

对方重置连接时引发的子类。

+-- FileExistsError

尝试创建已存在的文件或目录时引发。

+-- FileNotFoundError

在请求文件或目录但不存在时引发。

+-- InterruptedError

系统调用被输入信号中断时触发。

+-- IsADirectoryError

os.remove()在目录上请求文件操作时引发。

+-- NotADirectoryError

在对非目录的os.listdir()事物请求目录操作时引发。

+-- PermissionError

尝试在没有足够访问权限的情况下运行操作时引发,例如文件系统权限。

+-- ProcessLookupError

当给定进程不存在时引发。

+-- TimeoutError

系统功能在系统级别超时时触发。

+-- ReferenceError

引用错误,当weakref.proxy()函数创建的弱引用代理在被垃圾回收后用于访问引用对象的属性时,会引发此异常。python的垃圾回收机制另外再介绍。

+-- RuntimeError

在检测到不属于任何其他类别的错误时触发。关联值是一个字符串,表示出现了什么问题。

+-- NotImplementedError

在用户定义的基类中,抽象方法需要在派生类中重写方法,如果未实现就引发此异常。

+-- RecursionError

当解释器检测到sys.getrecursionlimit()超过最大递归深度时,会引发此异常,python的最大递归深度为:998。

+-- SyntaxError

语法错误时引发。

+-- IndentationError

缩进不符合规范导致。

+-- TabError

当缩进包含不一致的制表符和空格使用时引发。混用tab和空格导致。

+-- SystemError

当解释器发现内部错误时引发,您应该将此报告给Python解释器的作者或维护者。

+-- TypeError

将方法或函数应用于不适当类型的对象时引发。例如函数参数默认是整数,传入了其他类型。

+-- ValueError

当内置操作或函数接收到具有正确类型但值不正确的参数时引发。

+-- UnicodeError

发生与Unicode相关的编码或解码错误时引发。

+-- UnicodeDecodeError

编码错误引发。

+-- UnicodeEncodeError

解码错误引发。

+-- UnicodeTranslateError

翻译错误引发。

+-- Warning

警告类别的基类。

+-- DeprecationWarning

有关已弃用功能的警告的基类。

+-- PendingDeprecationWarning

有关将来不推荐使用的功能的警告的基类。

+-- RuntimeWarning

有关可疑运行时行为的警告的基类。

+-- SyntaxWarning

关于可疑语法警告的基类。

+-- UserWarning

用户代码生成警告的基类。

+-- FutureWarning

有关未来将弃用功能的警告的基类。

+-- ImportWarning

关于模块导入中可能出错的警告的基类。

+-- UnicodeWarning

与Unicode相关的警告的基类。

+-- BytesWarning

与bytes和bytearray相关的警告的基类。

+-- ResourceWarning

与资源使用相关的警告的基类。

如果喜欢记得分享朋友圈或发送给你的朋友哦!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180716G1MI0Q00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券