Python 程序当进程发生错误时,会抛出异常,并且会在标准输出流中输出错误信息,同时程序也会终止运行。在编写 Python 程序时,我们可以使用 try-except 块来捕获异常,从而让我们能够对程序发生的异常进行处理。
下面,我们将介绍一个简单的 Python 程序,并对其进行错误处理。这个程序的目的是从一个字符串列表中找出所有奇数长度的字符串,并将其打印出来。
```python
str_list = ["apple", "banana", "orange", "kiwi", "pear", "grape"]
for s in str_list:
if len(s) % 2 == 1: # 判断字符串长度是否为奇数
print(s)
```
在上面的代码中,我们首先定义了一个字符串列表 str_list,并遍历其中的每个字符串。我们使用取模运算符 % 来判断字符串长度是否为奇数,如果是则打印出该字符串。
现在,我们来假设一种可能的错误情况,即我们忘记检查字符串列表是否为空。如果 str_list 为空,那么上面的代码就会抛出一个 IndexError 异常。
为了避免程序因为发生异常而中断运行,我们可以使用 try-except 块对程序进行错误处理:
```python
str_list = []
try:
for s in str_list:
if len(s) % 2 == 1: # 判断字符串长度是否为奇数
print(s)
except IndexError:
print("字符串列表为空")
```
在上面的代码中,我们使用了一个 try-except 块,捕获了 IndexError 异常。如果程序在执行 for 循环时发生了 IndexError 异常,那么程序就会执行 except 块中的代码,打印出字符串列表为空的错误信息。
此外,除了使用 try-except 块进行异常处理,Python 还提供了一些内置方法来处理异常情况。比如,我们可以使用 try-except-else 块来处理未发生异常的情况:
```python
str_list = ["apple", "banana", "orange", "kiwi", "pear", "grape"]
try:
for s in str_list:
if len(s) % 2 == 1: # 判断字符串长度是否为奇数
print(s)
except IndexError:
print("字符串列表为空")
else:
print("程序执行完毕")
```
在上面的代码中,我们使用了 try-except-else 块。如果程序中没有发生索引越界异常,那么 else 块中的代码就会被执行,打印出程序执行完毕的信息。
另外,我们还可以使用 finally 块来进行清理工作。无论程序是否发生异常,在 finally 块中的代码都一定会被执行:
```python
str_list = []
try:
for s in str_list:
if len(s) % 2 == 1: # 判断字符串长度是否为奇数
print(s)
except IndexError:
print("字符串列表为空")
finally:
print("程序执行完毕")
```
在上面的代码中,我们定义了一个空的字符串列表 str_list,然后使用 try-except 块捕获了 IndexError 异常,并在 finally 块中打印出程序执行完毕的信息。
总体来说,Python 提供了很多方法来处理程序发生异常的情况,使我们能够更好地掌控程序的运行,保证程序的稳定性和可靠性。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.ynyuzhu.com/
发表评论 取消回复