知行编程网知行编程网  2022-12-30 06:00 知行编程网 隐藏边栏  2 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于python上下文管理器如何解决异常?的相关知识,包括python assert,以及python运行不报错又无任何结果输出这些编程知识,希望对大家有参考作用。

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



本文教程操作环境:

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 语法块内有异常发生时,会抛出异常给调用者。

class File:
 
    def __enter__(self):
        return file_obj
 
    def __exit__(self, exc_type, exc_value, exc_tb):
        # with 退出时释放文件资源
        file_obj.close()
        # 如果 with 内有异常发生 抛出异常
        if exc_type is not None:
            raise exception


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

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享