首页 > 代码库 > python错误和异常

python错误和异常

出错和异常

------------------------------------

python的标准异常(内建异常)


BaseException:所有异常的基类。


BaseException派生的子类:

KeyboardInterrupt:用户中断执行。

SystemExitpython解释器请求退出。

Exception:常规错误的基类。



Exception派生的子类:包括了所有其它的异常

GeneratorExit:生成器发生异常来通知退出

StopIteration:迭代器没有更多的值


ArithmeticError:所有数值计算错误的基类

AssertionError:断言语句失败

AttributeError:对象没有这个属性

BlockingIOError

BrokenPipeError

BufferError

ChildProcessError

ConnectionAbortedError

ConnectionError

ConnectionRefusedError

ConnectionResetError

EOFError:没有内建输入,到达EOF标记

EnvironmentError:操作系统错误的基类

FileExistsError

FileNotFoundError

FloatingPointError:浮点计算错误

IOError:输入输出操作失败

ImportError:导入模块或对象失败

IndentationError:缩进错误

IndexError:序列中没有次索引

InterruptedError

IsADirectoryError

KeyError:映射中没有这个键

LookupError:无效数据查询的基类

MemoryError:内存溢出错误

NameError:未申明或初始化对象

NotADirectoryError

NotImplementedError:尚未实现的方法

OSError:操作系统错误

OverflowError:数值运算超出最大限制

PermissionError

ProcessLookupError

ReferenceError:弱引用,试图访问已经垃圾回收的对象

RuntimeError:一般的运行时错误

SyntaxErrorpython语法错误

SystemError:一般的解释器系统错误

TabErrortab和空格混用

TimeoutError

TypeError:对类型无效的操作

UnboundLocalError:访问未初始化的本地变量

UnicodeErrorunicode相关的错误

UnicodeDecodeErrorunicode解码时的错误

UnicodeEncodeErrorunicode编码时错误

UnicodeTranslateErrorunicode转换时错误

ValueError:传入无效的参数

WindowsErrorwindows系统调用失败

ZeroDivisionError:除0


Warning:警告的基类

BytesWarning

DeprecationWarning:关于被弃用的特征的警告

FutureWarning:关于构造将来语义会有改变的警告

ImportWarning

PendingDeprecationWarning:关于特性将会被抛弃的警告

ResourceWarning

RuntimeWarning:可疑的运行时行为的警告

SyntaxWarning:可疑的语法的警告

UnicodeWarning

UserWarning:用户代码生成的警告


------------------------------------

try-except-else-finally语句结构:

try:

try_suite(监控这里的异常)

exceptException1[, reason1]:

except_suite(异常处理代码)

except ExceptionN[, reasonN]:

except_suite(可以用多个except处理一个try)

except(Exception1, Exception2,…) [, reason]:

except_suite(可以一个except处理多个异常)

except:

except_suite_for_all(处理所有except类中的异常)

[else:]

else_suitetry没有检测到异常时执行else部分)

[finally:]

finally_suite(无论是否检测到异常都执行finally部分)


ExceptionX是一个异常的类类型。

reason是导致异常的代码的诊断信息的类实例


如果有必须执行的部分可以用下面结构:

try:

try_suite

finally:

finally_suite


------------------------------------

with上下文管理:

withcontext_expr(上下文表达式)[as var] context_expr的返回值赋给var:

with_suite


只有支持上下文管理协议的对象才能使用with


下列对象支持该协议:
file

decimal.Context

thread.LockType

threading.Lock

threading.Rlock

threading.Condition

threading.Semaphore

threading.BoundedSemaphore


------------------------------------

raise触发异常:

tryexcept是捕获一个解释器产生的异常,raise可以定义自己的异常。


raise的通用结构:

raise[someException [, args [, traceback]]]

someException是异常名称

args是异常参数

traceback是追踪标志


raise一般使用下列格式:

raiseexclass:触发一个异常,从exclass生成一个实例

raiseexclass, args:同上,同时提供异常参数

raiseexclass, args, tb:同上,提供一个追踪记录对象tb

raiseexclass():通过函数调用操作符作用于类名生成一个exclass实例

raiseexclass(args):同上,同时提供异常参数

raiseexclass, instance:通过实例触发异常,

raiseinstance:通过实例触发异常,异常类型是实例的类型

raise:重新触发前一个异常,如果之前没有异常,触发TypeError


------------------------------------

assert断言

测试一个表达式,如果返回值是假,触发异常。


assertexpression[, arguments]

如果断言成功不做任何处理,如果断言失败,触发AssertionError错误。

arguments是一个异常参数。


------------------------------------

sys模块中和异常相关的函数:

sys.exc_info()可以返回一个异常信息的三元组

type异常类、value异常类实例、traceback跟踪记录对象。



python错误和异常