为增强程序的健壮性,我们也需要考虑异常处理方面的内容。例如
,在读取文件时需要考虑文件不存在、文件格式不正确等异常情况。这
就是本章要介绍的异常处理
![](https://img-blog.csdnimg.cn/85aace27f75544588f77ab538a86e123.png)
10.1
第一个异常
——
除零异常
在数学中,任何整数都不能除以
0
,如果在计算机程序中将整数除
以
0
,则会引发异常。
示例代码如下:
![](https://img-blog.csdnimg.cn/ddbac8e249ad49baa6b1bace866318d7.png)
通过
Python
指令运行文件,输出结果。
10.2
捕获异常
我们不能防止用户输入
0
,但在出现异常后我们能捕获并处理异常
,不至于让程序发生终止并退出。亡羊补牢,为时未晚
10.2.1 try-except
语句
异常捕获是通过
try-except
语句实现的,基本的
try-except
语句的语法
如下。
在
try
代码块中包含在执行过程中可能引发异常的语句,如果没有发
生异常,则跳到
except
代码块执行,这就是异常捕获。
try-except
语句的执行流程如下。
![](https://img-blog.csdnimg.cn/dd631a9f6f9241fc8a337bd4617b61bf.png)
通过
Python
指令运行文件,输出结果。
![](https://img-blog.csdnimg.cn/4ed4353bfedd4705b0ed66ffe3be754b.png)
从运行的结果可以看出,在输入数字
0
后,异常发生,跳到
except
代
码块执行。
![](https://img-blog.csdnimg.cn/6922e15b203c460fb4f5013a4302ef57.png)
将示例代码修改如下:
![](https://img-blog.csdnimg.cn/b88d728a5ee045a3a24f6b90e3543a22.png)
通过
Python
指令运行文件,输出结果。
![](https://img-blog.csdnimg.cn/7634537af0044220bbd7efa9a80d43b6.png)
10.2.2
多个
except
代码块
多条语句可能会引发多种不同的异常,对每一种异常都会采用不同
的处理方式。针对这种情况,我们可以在一个
try
后面跟多个
except
代码
块,语法如下:
![](https://img-blog.csdnimg.cn/33e6c78154ba4736b79d63735b67b2a9.png)
示例代码如下:
![](https://img-blog.csdnimg.cn/2ebd890696da41969f86f9bda9f52c3b.png)
通过
Python
指令运行文件,输出结果。
![](https://img-blog.csdnimg.cn/908f0dfc92c044438f5097e4eac50328.png)
10.2.3
多重异常捕获
![](https://img-blog.csdnimg.cn/3c67bc259f0641fa966f05e3d0bd0f47.png)
示例代码如下:
![](https://img-blog.csdnimg.cn/0d2b45a351d64d62af0c11a813e445a0.png)
通过
Python
指令运行文件,输出结果。
![](https://img-blog.csdnimg.cn/cc3b418c7c4841669ad727382cd0569e.png)
10.2.4 try-except
语句嵌套
try-except
语句还可以嵌套,修改
10.2.2
节的示例代码如下:
![](https://img-blog.csdnimg.cn/e07d9c35faf94162bb0484170aed3c35.png)
通过
Python
指令运行文件,输出结果。
10.3
使用
finally
代码块释放资源
有时在
try-except
语句中会占用一些资源,例如打开的文件、网络连
接、打开的数据库及数据结果集等都会占用计算机资源,需要程序员释
放这些资源。为了确保这些资源能够被释放,可以使用
finally
代码块。
在
try-except
语句后面还可以跟一个
finally
代码块,语法如下。
![](https://img-blog.csdnimg.cn/5224c30a510145e1a201fa658f454f0c.png)
无论是
try
代码块正常结束还是
except
代码块异常结束,都会执行
fin
ally
代码块。
![](https://img-blog.csdnimg.cn/882d3862c94540169125a2435339b7e6.png)
使用
finally
代码块的示例代码如下
通过
Python
指令运行文件,输出结果。
![](https://img-blog.csdnimg.cn/6cb3afec110d4e618f47cfc9f15895c2.png)
![](https://img-blog.csdnimg.cn/28bedf49bf5547678ce1d0929138bcfe.png)
10.5
动动手
——
手动引发异常
![](https://img-blog.csdnimg.cn/e19eae97f3434165b174733fcb5032ce.png)
示例代码如下:
通过
Python
指令运行文件,输出结果。
![](https://img-blog.csdnimg.cn/e37b82fb6456468d9e96d681090a860b.png)
10.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
异常。()
版权声明:本文为tysonchiu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。