当前位置: 首页 > 图灵资讯 > 行业资讯> python上下文管理器如何解决异常?

python上下文管理器如何解决异常?

来源:图灵python
时间: 2024-09-09 10:20:53

本教程的操作环境:windows7系统,Python 3.9.1,DELL G3电脑。

1、异常说明

异常可以在__exit__ 捕获并由你自己决定如何处理,是抛出还是不抛出。在__exit__ 里返回 True(没有return 就默认为 return False),相当于告诉 Python解释器,我们已经捕获了这个异常,不需要再扔了。

2、参数

__exit__ 在函数中,需要注意的是,它必须有三个参数:

exc_type:异常类型

exc_val:异常值

exc_tb:错误栈信息异常

当主逻辑代码没有报告异常时,这三个参数都将是None。

3、异常实例

在这种方法中,如果需要对异常进行特殊处理,就可以实现自定义逻辑。

之所以 with 由于内置文件对象实现了上下文管理器协议,文件对象可以自动关闭文件资源 __enter__ 该方法返回文件句柄,并在 __exit__ 此外,当文件资源被关闭时, with 当语法块中出现异常时,会将异常抛出给调用者。

classFile:

def__enter__(self):
returnfile_obj

def__exit__(self,exc_type,exc_value,exc_tb):
#with退出时释放文件资源
file_obj.close()
#如果with出现异常抛出异常
ifexc_typeisnotNone:
raiseexception

以上是python上下文管理器解决异常的方法。学习后也可以选择这种方式处理异常,省去了我们抛出异常的选择,对简化工作非常有效。