顺企网哈尔滨网站建设,wordpress 检索,惠水网站建设,情人节网站怎么做一. 简介
前面一篇文章简单学习了 try-finally语句结构#xff0c;执行过程、以及使用场景。文章如下#xff1a;
Python3中异常处理#xff1a;try-finally语句-CSDN博客
本文写一些简单的示例来继续学习 try-finally语句的使用。 二. Python3中异常处理#xff1a;try…一. 简介
前面一篇文章简单学习了 try-finally语句结构执行过程、以及使用场景。文章如下
Python3中异常处理try-finally语句-CSDN博客
本文写一些简单的示例来继续学习 try-finally语句的使用。 二. Python3中异常处理try-finally语句的示例
示例 1try 块在执行时发生异常后会立刻停止执行 try块中剩下的代码转而匹配 except的异常
#!/usr/bin/env python3def sub_func():try:print(进入try代码块)value 20 / 0print(这块代码不会执行)finally:print(无论是否发生异常这块代码都会执行)try:sub_func()
except ZeroDivisionError as err:print(f{err}: 捕获到 ZeroDivisionError 异常)
运行后结果如下 可以看出这是一个嵌套的 try...except语句结构内部的 try...finally语句块触发了异常因为内部没有 异常处理 except处理所以将该异常抛出到外层的 try...except语句块打印异常信息。 示例 2带 except块异常处理的还有 else块的try块执行无异常时会执行的块
#!/usr/bin/env python3#假如 test.txt文件已存在
file_name test.txtdef sub_func(filename):fd Nonetry:fd open(filename, r)except FileNotFoundError as err:print(Not found file: error:,err)else:print(open file OK.)finally:print(finally code-blocks)if fd:fd.close()#调用 sub_func()函数
sub_func(file_name)
运行后结果如下 示例 3避免在 finally块 中触发异常否则在 finally块中引发了新的异常可能会掩盖之前的异常
#!/usr/bin/env python3#定义sub_func函数
def sub_func():try:raise ValueError(原始异常)finally:raise RuntimeError(新的异常)#外部try--except块
try:sub_func()
except Exception as err:print(err)raise ValueError(原始异常) 手动触发了一个 ValueError类型的异常。并附带一条描述性的错误信息。
except Exception as err : 捕获所有继承自 Exception 类的异常。Exception是 Python中大多数内置异常类的基类因此这行代码可以捕获几乎所有常见的异常。
运行后结果如下
wangtianwangtian-virtual-machine:~/Code_Learns/python_codes$ ./hello.py
新的异常可以看出在内部 try异常处理代码块中try 中手动触发了的一个 ValueError 类型的异常而由于 finally块中触发了一个 RuntimeError类型的异常最终把 try块的原来的异常覆盖掉了。所以尽量不要在 finally块中触发异常。