我是靠谱客的博主 魁梧奇迹,这篇文章主要介绍Python异常处理语句 try...except...else...,现在分享给大家,希望可以做个参考。

前面已经讲解了try...except...结构(https://blog.csdn.net/weixin_50486192/article/details/123095521),现在在try...except...结构的基础上,再添加一个else代码块,形成try...except...else...结构,即

try:
    可能产生异常的代码块1
except [(Error1, Error2, ...) [as e]]:
    处理异常的代码块2
except [(Error3, Error4, ...) [as e]]:
    处理异常的代码块3
except [(Exception) [as e]]:
    处理其它异常的代码块n
else:
    代码块1无异常时执行的代码块

当try中的代码块1出现异常,系统就会自动生成相应的异常类型,然后根据异常类型Error进入相应的except分支进行异常处理;如果try代码块没有出现任何异常时,就会直接跳到else的代码块执行。
所以,else的代码块,只有当try的代码块没有出现异常时才会显现出来,否则else中的代码块不会执行。

例1:try中没有出现异常

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
try: a = 10 b = 2 c = a / b except (ValueError, TypeError) as e: # 该except分支可以同时捕获并处理 ValueError, TypeError这2种类型的异常 print("ValueError or TypeError:", e) except (ZeroDivisionError) as e: # 该except分支可以捕获并处理 ZeroDivisionError 这种类型的异常 print('ZeroDivisionError:', e) except(Exception) as e: # 未指定具体要捕获的异常类型, 意味着可捕获所有类型的异常, print("other exceptions:", e) else: print("result:", c) # try 中没有出现异常,会执行 print("continue...")

执行结果:
result: 5.0
continue...

例2:try中出现异常

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
try: a = 10 b = 0 c = a / b # b作为被除数不能为0,将出现 ZeroDivisionError 的异常 except (ValueError, TypeError) as e: # 该except分支可以同时捕获并处理 ValueError, TypeError这2种类型的异常 print("ValueError or TypeError:", e) except (ZeroDivisionError) as e: # 该except分支可以捕获并处理 ZeroDivisionError 这种类型的异常 print('ZeroDivisionError:', e) except(Exception) as e: # 未指定具体要捕获的异常类型, 意味着可捕获所有类型的异常, print("other exceptions:", e) else: print("result:", c) # try 中出现了异常,不会执行 print("continue...")

执行结果:
ZeroDivisionError: division by zero
continue...

注意:
try中一般不使用return语句,如果try中含有return语句,可能会阻碍到except或else的执行。
例:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def test(): try: print(1) return 1 # raise ValueError() # 加上这一句后会阻碍except的执行 except: print(2) return 2 else: print(3) return 3 print('continue...') print(test())

执行结果:
continue...
1
1

从执行结果可以看出,尽管try中没有出现异常,但是含有return语句,所以在执行else代码块之前就已经返回了,因而执行不到else部分。
 

最后

以上就是魁梧奇迹最近收集整理的关于Python异常处理语句 try...except...else...的全部内容,更多相关Python异常处理语句内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部