异常
异常
概述
异常会导致程序无法正常运行。提前预知异常,并对异常设置相应的操作能够完善代码。
处理异常
try: pass except ValueError as e: pass except Exception as e: print(e.args) pass
一、Python内置异常类
BaseException 所有异常的基类 +-- SystemExit 解释器请求退出 +-- KeyboardInterrupt 用户中断执行(通常是输入^C) +-- GeneratorExit 生成器(generator)发生异常来通知退出 +-- Exception 常规错误的基类 +-- StopIteration 迭代器没有更多值 +-- StopAsyncIteration 必须通过异步迭代器对象的__anext__()方法引发以停止迭代 +-- ArithmeticError 所有数值计算错误的基类 | +-- FloatingPointError 浮点计算错误 | +-- OverflowError 数值运算超出最大限制 | +-- ZeroDivisionError 除(或取模)零 (所有数据类型 +-- AssertionError 断言语句失败 +-- AttributeError 对象没有这个属性 +-- BufferError 与缓冲区相关的操作时引发 +-- EOFError 没有内建输入,到达EOF 标记 +-- ImportError 导入失败 | +-- ModuleNotFoundError 找不到模块 +-- LookupError 无效数据查询的基类 | +-- IndexError 序列中没有此索引(index) | +-- 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 Python 语法错误 | +-- IndentationError 缩进错误 | +-- TabError Tab 和空格混用 +-- SystemError 一般的解释器系统错误 +-- TypeError 对类型无效的操作 +-- ValueError 传入无效的参数 | +-- UnicodeError Unicode 相关的错误 | +-- UnicodeDecodeError Unicode 解码时的错误 | +-- UnicodeEncodeError Unicode 编码时错误 | +-- UnicodeTranslateError Unicode 转换时错误 +-- Warning 警告的基类 +-- DeprecationWarning 关于被弃用的特征的警告 +-- PendingDeprecationWarning 关于构造将来语义会有改变的警告 +-- RuntimeWarning 可疑的运行行为的警告 +-- SyntaxWarning 可疑的语法的警告 +-- UserWarning 用户代码生成的警告 +-- FutureWarning 有关已弃用功能的警告的基类 +-- ImportWarning 模块导入时可能出错的警告的基类 +-- UnicodeWarning 与Unicode相关的警告的基类 +-- BytesWarning bytes和bytearray相关的警告的基类 +-- ResourceWarning 与资源使用相关的警告的基类。。
注:1、重点关注的Python内置异常有:AttributeError(对象没有这个属性)、ValueError(传入无效的参数)、TypeError(对类型无效的操作)、SyntaxError(Python 语法错误)、NameError(未声明、初始化对象)、OSError(操作系统错误)
二、HTTP异常
第一部分:常用的HTTP异常:
1xx:表示临时响应 100:(继续)请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分 101:(切换协议)请求者已要求服务器切换协议,服务器已确认并准备切换 2xx:表示成功处理了请求的状态代码 200(成功)服务器已成功处理了请求,通常,这表示服务器提供了请求的页面 204(重置内容)服务器成功处理了请求,但没有返回任何内容 206(部分内容)服务器成功处理了部分GET请求 3xx(重定向):表示要完成请求,需要进一步操作。通常,这些状态代码用来重定向 301:(永久移动)请求的页面已永久移动到新位置。服务器返回此响应(对GET和HEAD请求的响应)时,会自动将请求者转到新位置 302(临时移动)服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求 303(查看其他位置)请求者应当对不同的位置使用单独的GET请求来检索响应时,服务器返回此代码 304(未修改)自从上次请求后,请求的页面未修改过。服务器返回此响应时,不会返回网页内容 4xx(请求错误):这些状态代码表示请求可能出错,妨碍了服务器的处理 400:(错误请求)服务器不理解请求的语法 401(未授权)请求要求身份验证。对于需要登录的网页,服务器可能返回此响应 403(禁止)服务器拒绝请求 404(未找到)服务器找不到请求的网页 405(方法禁用)禁用请求中指定的方法 406(不接受)无法使用请求的内容特性响应请求的网页 408(请求超时)服务器等候请求时发生超时 414(请求的URI过长)请求的URI(通常为网址)过长,服务器无法处理 415(不支持的媒体类型)请求的格式不受请求页面的支持 416(请求范围不符合要求)如果页面无法提供请求的范围,则服务器会返回此状态码 5xx(服务器错误)这些状态代码表示服务器在尝试处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错 500(服务器内部错误)服务器遇到错误,无法完成请求 501(尚未实施)服务器不具备完成请求的功能,例如,服务器无法识别请求方法时可能会返回此代码 502(错误网关)服务器作为网关和代理,从上游服务器收到无效响应 503(服务器不可用)服务器目前无法使用(由于超载或者停机维护)。通常,这只是暂时状态 504(网关超时)服务器作为网关或者代理,但是没有及时从上游服务器收到请求 505(HTTP版本不受支持)服务器不支持请求中所用的HTTP协议版本
第二部分:HTTP异常详细
400 无法解析此请求。 401.1 未经授权:访问由于凭据无效被拒绝。 401.2 未经授权: 访问由于服务器配置倾向使用替代身份验证方法而被拒绝。 401.3 未经授权:访问由于 ACL 对所请求资源的设置被拒绝。 401.4 未经授权:Web 服务器上安装的筛选器授权失败。 401.5 未经授权:ISAPI/CGI 应用程序授权失败。 401.7 未经授权:由于 Web 服务器上的 URL 授权策略而拒绝访问。 403 禁止访问:访问被拒绝。 403.1 禁止访问:执行访问被拒绝。 403.2 禁止访问:读取访问被拒绝。 403.3 禁止访问:写入访问被拒绝。 403.4 禁止访问:需要使用 SSL 查看该资源。 403.5 禁止访问:需要使用 SSL 128 查看该资源。 403.6 禁止访问:客户端的 IP 地址被拒绝。 403.7 禁止访问:需要 SSL 客户端证书。 403.8 禁止访问:客户端的 DNS 名称被拒绝。 403.9 禁止访问:太多客户端试图连接到 Web 服务器。 403.10 禁止访问:Web 服务器配置为拒绝执行访问。 403.11 禁止访问:密码已更改。 403.12 禁止访问:服务器证书映射器拒绝了客户端证书访问。 403.13 禁止访问:客户端证书已在 Web 服务器上吊销。 403.14 禁止访问:在 Web 服务器上已拒绝目录列表。 403.15 禁止访问:Web 服务器已超过客户端访问许可证限制。 403.16 禁止访问:客户端证书格式错误或未被 Web 服务器信任。 403.17 禁止访问:客户端证书已经到期或者尚未生效。 403.18 禁止访问:无法在当前应用程序池中执行请求的 URL。 403.19 禁止访问:无法在该应用程序池中为客户端执行 CGI。 403.20 禁止访问:Passport 登录失败。 404 找不到文件或目录。 404.1 文件或目录未找到:网站无法在所请求的端口访问。 注意 404.1 错误只会出现在具有多个 IP 地址的计算机上。如果在特定 IP 地址/端口组合上收到客户端请求,而且没有将 IP 地址配置为在该特定的端口上侦听,则 IIS 返回 404.1 HTTP 错误。例如,如果一台计算机有两个 IP 地址,而只将其中一个 IP 地址配置为在端口 80 上侦听,则另一个 IP 地址从端口 80 收到的任何请求都将导致 IIS 返回 404.1 错误。只应在此服务级别设置该错误,因为只有当服务器上使用多个 IP 地址时才会将它返回给客户端。 404.2 文件或目录无法找到:锁定策略禁止该请求。 404.3 文件或目录无法找到:MIME 映射策略禁止该请求。 405 用于访问该页的 HTTP 动作未被许可。 406 客户端浏览器不接受所请求页面的 MIME 类型。 407 Web 服务器需要初始的代理验证。 410 文件已删除。 412 客户端设置的前提条件在 Web 服务器上评估时失败。 414 请求 URL 太大,因此在 Web 服务器上不接受该 URL。 500 服务器内部错误。 500.11 服务器错误:Web 服务器上的应用程序正在关闭。 500.12 服务器错误:Web 服务器上的应用程序正在重新启动。 500.13 服务器错误:Web 服务器太忙。 500.14 服务器错误:服务器上的无效应用程序配置。 500.15 服务器错误:不允许直接请求 GLOBAL.ASA。 500.16 服务器错误:UNC 授权凭据不正确。 500.17 服务器错误:URL 授权存储无法找到。 500.18 服务器错误:URL 授权存储无法打开。 500.19 服务器错误:该文件的数据在配置数据库中配置不正确。 500.20 服务器错误:URL 授权域无法找到。 500 100 内部服务器错误:ASP 错误。 501 标题值指定的配置没有执行。 502 Web 服务器作为网关或代理服务器时收到无效的响应。 503(服务器不可用)服务器目前无法使用(由于超载或者停机维护)。通常,这只是暂时状态 504(网关超时)服务器作为网关或者代理,但是没有及时从上游服务器收到请求 505(HTTP版本不受支持)服务器不支持请求中所用的HTTP协议版本