2012.3.16
exceptions
模块提供了标准异常的层次结构. Python 启动的时候会自动导入这个模块, 而且将它加入到 _ _builtin_ _
模块中. 也就是说, 通常不须要手动导入这个模块. 函数
在 1.5.2 版本时它是一个普通模块, 2.0 以及之后版本成为内建模块. ui
该模块定义了如下标准异常:code
- Exception 是全部异常的基类. 强烈建议(但不是必须)自定义的异常异常也继承这个类.
- SystemExit(Exception) 由
sys.exit
函数引起. 若是它在最顶层没有被 try-except
语句捕获, 那么解释器将直接关闭而不会显示任何跟踪返回信息.
- StandardError(Exception) 是全部内建异常的基类(除 SystemExit 外).
- KeyboardInterrupt(StandardError) 在用户按下 Control-C(或其余打断按键)后 被引起. 若是它可能会在你使用 "捕获全部" 的
try-except
语句时致使奇怪的问题.
- ImportError(StandardError) 在 Python 导入模块失败时被引起.
- EnvironmentError 做为全部解释器环境引起异常的基类. (也就是说, 这些异常通常不是因为程序 bug 引发).
- IOError(EnvironmentError) 用于标记 I/O 相关错误.
- OSError(EnvironmentError) 用于标记
os
模块引发的错误.
- WindowsError(OSError) 用于标记
os
模块中 Windows 相关错误.
- NameError(StandardError) 在 Python 查找全局或局部名称失败时被引起.
- UnboundLocalError(NameError) , 当一个局部变量尚未赋值就被使用时, 会引起这个异常. 这个异常只有在2.0及以后的版本有; 早期版本只会引起一个普通的 NameError .
- AttributeError(StandardError) , 当 Python 寻找(或赋值)给一个实例属性, 方法, 模块功能或其它有效的命名失败时, 会引起这个异常.
- SyntaxError(StandardError) , 当解释器在编译时遇到语法错误, 这个异常就被引起.
- (2.0 及之后版本) IndentationError(SyntaxError) 在遇到非法的缩进时被引起. 该异常只用于 2.0 及之后版本, 以前版本会引起一个 SyntaxError 异常.
- (2.0 及之后版本) TabError(IndentationError) , 当使用
-tt
选项检查不一致缩进时有可能被引起. 该异常只用于 2.0 及之后版本, 以前版本会引起一个 SyntaxError 异常.
- TypeError(StandardError) , 当给定类型的对象不支持一个操做时被引起.
- AssertionError(StandardError) 在
assert
语句失败时被引起(即表达式为 false 时).
- LookupError(StandardError) 做为序列或字典没有包含给定索引或键时所引起异常的基类.
- IndexError(LookupError) , 当序列对象使用给定索引数索引失败时(不存在索引对应对象)引起该异常.
- KeyError(LookupError) 当字典对象使用给定索引索引失败时(不存在索引对应对象)引起该异常.
- ArithmeticError(StandardError) 做为数学计算相关异常的基类.
- OverflowError(ArithmeticError) 在操做溢出时被引起(例如当一个整数太大, 致使不能符合给定类型).
- ZeroDivisionError(ArithmeticError) , 当你尝试用 0 除某个数时被引起.
- FloatingPointError(ArithmeticError) , 当浮点数操做失败时被引起.
- ValueError(StandardError) , 当一个参数类型正确但值不合法时被引起.
- (2.0 及之后版本) UnicodeError(ValueError) , Unicode 字符串类型相关异常. 只使用在 2.0 及之后版本.
- RuntimeError(StandardError) , 当出现运行时问题时引起, 包括在限制模式下尝试访问外部内容, 未知的硬件问题等等.
- NotImplementedError(RuntimeError) , 用于标记未实现的函数, 或无效的方法.
- SystemError(StandardError) , 解释器内部错误. 该异常值会包含更多的细节 (常常会是一些深层次的东西, 好比 "
eval_code2: NULL globals" )
. 这本书的做者编了 5 年程序都没见过这个错误. (想必是没有用 raise SystemError
).
- MemoryError(StandardError) , 当解释器耗尽内存时会引起该异常. 注意只有在底层内存分配抱怨时这个异常才会发生; 若是是在你的旧机器上, 这个异常发生以前系统会陷入混乱的内存交换中.