Python的日常:异常

异常是程序在运行时出现的错误或意外。

Python程序的异常若不在程序中化解,其最终将交由解释器来处理。解释器会抛出异常,并终止程序运行。

除非出现致命错误,否则,不应让程序随便终止。要对程序中可能出现的异常进行检测,并妥善处理。

10.1. 监测、捕获异常

使用try检测异常,except捕获异常。

  • try-except:基本形式。
    变量e给出了引起异常的原因

    也可以对多个异常进行检测

    可以用else来处理未发生异常时的情况,注意,只允许出现一个else语句

    最后,如果不指定要检测的异常类型,将捕获一切异常

  • try-finally:监测异常,不论异常是否发生,finally都会执行,只可存在一个finally语句。由于没有使用except,异常并未被处理,finally执行完后,异常会被向上传递,直到解释器。解释器会抛出异常并终止程序。finally常用于一些必要的清理,如关闭文件、断开TCP连接等。

  • try-except-finally:综合了上述两种情况。处理完异常之后,finally依然执行。

10.2. 人为触发异常

raise语句用于人为地触发一个异常。

10.3. 断言

使用assert语句进行断言操作,它会在程序引入调试代码。

1
assert cond[, expression]

相当于:

1
2
3
if __debug__: 
    if not cond:
        raise AssertionError, expression

如果cond为真,assert不做任何操作,若为假,assert将会以expression为参数实例化一个AssertionError对象并raise该异常。

运行Python时,若使能-O优化选项,内置的__debug__变量为False,编译器不会为assert生成代码。不使用该选项,__debug__值为True 。

<== index ==>