python上下文管理器如何解决异常?
python上下文管理器如何解决异常?
本文教程操作环境:windows7系统、Python3.9.1,DELLG3电脑。
1、异常说明
异常可以在__exit__进行捕获并由你自己决定如何处理,是抛出还是不抛出。在__exit__里返回True(没有return就默认为returnFalse),就相当于告诉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上下文管理器解决异常的方法,大家在学会后,也可以选择这种方式来处理异常,会省去我们抛出异常的选择,对于简化工作是非常有效的。更多Python学习教程请关注IT培训机构:千锋教育。
相关推荐HOT
更多>>pythonfor循环是什么
pythonfor循环是什么在做遍历的时候,对于一些数据的反复循环执行,我们会用到for循环的语句。可以说这是新手入门必学的语句之一,在很多基础循...详情>>
2023-11-13 07:46:36pythoncontextmanager()的转换
python中contextmanager()的转换1、说明当发出请求时,requests库会在将请求实际发送到目标服务器之前准备该请求。请求准备包括像验证头信息和...详情>>
2023-11-13 06:34:35python使用items()遍历键值对
python使用items()遍历键值对字典可以用来存储各种方式的信息,所以有很多方式可以通过字典的所有键值对、键或值。说明1、即使通过字典,键值对...详情>>
2023-11-13 04:24:15python实例方法中self的作用
python实例方法中self的作用说明1、无论是创建类的构造方法还是实例方法,最少要包含一个参数self。2、通过实例的self参数与对象进行绑定,程序...详情>>
2023-11-13 03:46:48