对于新手程序员来说,难免会遇到头疼的异常,面对满屏的错误信息瞬间懵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
与资源使用相关的警告的基类。
如果喜欢记得分享朋友圈或发送给你的朋友哦!
领取专属 10元无门槛券
私享最新 技术干货