Charon0920 发表于 2021-8-5 17:15

Python编程中经常被引发的异常总结

本帖最后由 Charon0920 于 2021-8-20 17:30 编辑

引自Python官方文档,祝大家python编程过过过:lol
[*]exception AssertionError当 assert 语句失败时将被引发。
[*]exception AttributeError当属性引用 (参见 属性引用) 或赋值失败时将被引发。 (当一个对象根本不支持属性引用或属性赋值时则将引发 TypeError。)
[*]exception EOFError当 input() 函数未读取任何数据即达到文件结束条件 (EOF) 时将被引发。
[*]exception FloatingPointError目前未被使用。
[*]exception GeneratorExit当一个 generator 或 coroutine 被关闭时将被引发;参见 generator.close() 和 coroutine.close()。 它直接继承自 BaseException 而不是 Exception,因为从技术上来说它并不是一个错误。
[*]exception ImportError当 import 语句尝试加载模块遇到麻烦时将被引发。 并且当 from ... import 中的 "from list" 存在无法找到的名称时也会被引发。name 与 path 属性可通过对构造器使用仅关键字参数来设定。 设定后它们将分别表示被尝试导入的模块名称与触发异常的任意文件所在路径。
[*]exception MemoryError当一个操作耗尽内存但情况仍可(通过删除一些对象)进行挽救时将被引发。 关联的值是一个字符串,指明是哪种(内部)操作耗尽了内存。 请注意由于底层的内存管理架构(C 的 malloc() 函数),解释器也许并不总是能够从这种情况下完全恢复;但它毕竟可以引发一个异常,这样就能打印出栈回溯信息,以便找出导致问题的失控程序。
[*]exception NameError当某个局部或全局名称未找到时将被引发。 此异常仅用于非限定名称。 关联的值是一条错误信息,其中包含未找到的名称。exception NotImplementedError此异常派生自 RuntimeError。 在用户自定义的基类中,抽象方法应当在其要求所派生类重载该方法,或是在其要求所开发的类提示具体实现尚待添加时引发此异常。
[*]注解 它不应当用来表示一个运算符或方法根本不能被支持 -- 在此情况下应当让特定运算符 / 方法保持未定义,或者在子类中将其设为 None。
[*]OSError此异常在一个系统函数返回系统相关的错误时将被引发,此类错误包括 I/O 操作失败例如 "文件未找到" 或 "磁盘已满" 等(不包括非法参数类型或其他偶然性错误)。构造器的第二种形式可设置如下所述的相应属性。 如果未指定这些属性则默认为 None。
[*]exception RecursionError此异常派生自 RuntimeError。 它会在解释器检测发现超过最大递归深度 (参见 sys.getrecursionlimit()) 时被引发。
[*]exception RuntimeError当检测到一个不归属于任何其他类别的错误时将被引发。 关联的值是一个指明究竟发生了什么问题的字符串。exception StopIteration由内置函数 next() 和 iterator 的 __next__() 方法所引发,用来表示该迭代器不能产生下一项。该异常对象只有一个属性 value,它在构造该异常时作为参数给出,默认值为 None。当一个 generator 或 coroutine 函数返回时,将引发一个新的 StopIteration 实例,函数返回的值将被用作异常构造器的 value 形参。如果某个生成器代码直接或间接地引发了 StopIteration,它会被转换为 RuntimeError (并将 StopIteration 保留为导致新异常的原因)。
[*]exception StopAsyncIteration必须由一个 asynchronous iterator 对象的 __anext__() 方法来引发以停止迭代操作。






OS 异常下列异常均为 OSError 的子类,它们将根据系统错误代码被引发。





[*]exception BlockingIOError当一个操作会被某个设置为非阻塞操作的对象(例如套接字)所阻塞时将被引发。 对应于 errno EAGAIN, EALREADY, EWOULDBLOCK 和 EINPROGRESS。除了 OSError 已有的属性,BlockingIOError 还有一个额外属性:characters_written一个整数,表示在被阻塞前已写入到流的字符数。 当使用来自 io 模块的带缓冲 I/O 类时此属性可用。
[*]exception ChildProcessError当一个子进程上的操作失败时将被引发。 对应于 errno ECHILD。
[*]exception ConnectionError与连接相关问题的基类。其子类有 BrokenPipeError, ConnectionAbortedError, ConnectionRefusedError 和 ConnectionResetError。
[*]exception BrokenPipeErrorConnectionError 的子类,当试图写入另一端已被关闭的管道,或是试图写入已关闭写入的套接字时将被引发。 对应于 errno EPIPE 和 ESHUTDOWN。
[*]exception ConnectionAbortedErrorConnectionError 的子类,当连接尝试被对端中止时将被引发。 对应于 errno ECONNABORTED。
[*]exception ConnectionRefusedErrorConnectionError 的子类,当连接尝试被对端拒绝时将被引发。 对应于 errno ECONNREFUSED。exception ConnectionResetErrorConnectionError 的子类,当连接被对端重置时将被引发。 对应于 errno ECONNRESET。exception FileExistsError当试图创建一个已存在的文件或目录时将被引发。 对a应于 errno EEXIST。
[*]exception FileNotFoundError当所请求的文件或目录不存在时将被引发。 对应于 errno ENOENT。exception InterruptedError当系统调用被输入信号中断时将被引发。 对应于 errno EINTR。
[*]exception PermissionError当在没有足够操作权限的情况下试图执行某个操作时将被引发 —— 例如缺少文件系统权限。 对应于 errno EACCES 和 EPERM。
[*]exception ProcessLookupError当给定的进程不存在时将被引发。 对应于 errno ESRCH。
[*]exception TimeoutError当一个系统函数发生系统级超时的情况下将被引发。 对应于 errno ETIMEDOUT。

asdswd 发表于 2021-8-5 18:47

QQending 发表于 2021-8-5 19:42

水贴和水回复?有点过分了吧

ymhld 发表于 2021-8-5 22:02

能好好排排版吗?有点乱呢

metaxman 发表于 2021-8-5 23:45

谢谢楼主的分享,写到了很多报的错误类型

Charon0920 发表于 2021-8-29 22:44

ymhld 发表于 2021-8-5 22:02
能好好排排版吗?有点乱呢

不好意思,初次发帖。现在已重新排版
页: [1]
查看完整版本: Python编程中经常被引发的异常总结