[捕获异常]
try...except :把通常的语句放在try块中 ,而把错误处理语句放在except块中 。
[引发异常]
我们可以使用raise语句 引发异常,此时还要指明 错误/异常的名称 和伴随异常触发的异常对象 。我们可以引发的错误或异常应该分别是一个Error或Exception类的直接或间接导出类 。
[注意]
[1] 在这里,我们创建了我们自己的异常类型,其实我们可以使用任何预定义的异常/错误。这个新的异常类型是ShortInputException类。它有两个域 ——length是给定输入的长度,atleast则是程序期望的最小长度。
[2] 在except从句中,我们提供了错误类和用来表示错误/异常对象的变量。这与函数调用中的形参和实参概念类似。在这个特别地except从句中,我们使用异常对象的length和atleast域来为用户打印一个恰当的消息。
[try...finally的用法]
假如你在读一个文件的时候,希望在无论异常发生与否的情况下都关闭文件,这可以使用finally块 来完成。注意,在一个try块下,你可以同时使用except从句和finally块。
[注意]
[1] 有意在每打印一行之前用time.sleep方法 暂停2秒钟。在程序运行的时候,按Ctrl+c 中断/取消程序。
[2] 我们可以观察到KeyboardInterrupt异常 被触发,程序退出。但是,在程序退出之前,finally从句仍然被执行,把文件关闭。