首页 > 代码库 > python错误和异常
python错误和异常
出错和异常
------------------------------------
python的标准异常(内建异常):
BaseException:所有异常的基类。
从BaseException派生的子类:
KeyboardInterrupt:用户中断执行。
SystemExit:python解释器请求退出。
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:一般的运行时错误
SyntaxError:python语法错误
SystemError:一般的解释器系统错误
TabError:tab和空格混用
TimeoutError:
TypeError:对类型无效的操作
UnboundLocalError:访问未初始化的本地变量
UnicodeError:unicode相关的错误
UnicodeDecodeError:unicode解码时的错误
UnicodeEncodeError:unicode编码时错误
UnicodeTranslateError:unicode转换时错误
ValueError:传入无效的参数
WindowsError:windows系统调用失败
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_suite(try没有检测到异常时执行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触发异常:
try和except是捕获一个解释器产生的异常,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错误和异常