为增强程序的健壮性,我们也需要考虑异常处理方面的内容。例如 ,在读取文件时需要考虑文件不存在、文件格式不正确等异常情况。这 就是本章要介绍的异常处理。
1 第一个异常——除零异常
在数学中,任何整数都不能除以0,如果在计算机程序中将整数除 以0,则会引发异常。 示例代码如下:
通过Python指令运行文件,输出结果。
2 捕获异常
我们不能防止用户输入0,但在出现异常后我们能捕获并处理异常 ,不至于让程序发生终止并退出。亡羊补牢,为时未晚。
2.1 try-except语句
异常捕获是通过try-except语句实现的,基本的try-except语句的语法 如下。 在try代码块中包含在执行过程中可能引发异常的语句,如果没有发 生异常,则跳到except代码块执行,这就是异常捕获。 try-except语句的执行流程如下。
2.2 多个except代码块
多条语句可能会引发多种不同的异常,对每一种异常都会采用不同 的处理方式。针对这种情况,我们可以在一个try后面跟多个except代码 块,语法如下:
示例代码如下:
2.3 多重异常捕获
2.4 try-except语句嵌套
try-except语句还可以嵌套,修改10.2.2节的示例代码如下:
3 使用finally代码块释放资源
有时在try-except语句中会占用一些资源,例如打开的文件、网络连 接、打开的数据库及数据结果集等都会占用计算机资源,需要程序员释 放这些资源。为了确保这些资源能够被释放,可以使用finally代码块。 在try-except语句后面还可以跟一个finally代码块,语法如下。
通过Python指令运行文件,输出结果:
4 自定义异常类
实现自定义异常类的示例代码如下:
5 动动手——手动引发异常
6 练一练
1 请列举一些常见的异常。
2 手动引发异常的语句有哪些?()
A.throw
B.raise
C.try
D.except
3 判断对错:(请在括号内打√或×,√表示正确,×表示错误)。
1)每个try代码块都可以伴随一个或多个except代码块,用于处理tr y代码块中所有可能引发的异常。()
2)为了确保这些资源被释放,可以使用finally代码块。()
3)实现自定义异常类时,需要继承Exception类或其子类。()
4)为了提供程序的健壮性,我们应该对所有类型异常都进行捕获 。()
5)一个整数除以0时会引发ValueError异常。()