• 技术文章 >Python技术 >Python基础教程

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

    小妮浅浅小妮浅浅2021-03-29 09:57:36原创2067

    本文教程操作环境: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上下文管理器解决异常的方法,大家在学会后,也可以选择这种方式来处理异常,会省去我们抛出异常的选择,对于简化工作是非常有效的。

    专题推荐:python上下文管理器
    上一篇:python上下文管理器的用法详解 下一篇:python中@contextmanager是什么?

    相关文章推荐

    • python守护线程是什么• python守护线程如何创建?• python上下文管理器的基本介绍• python上下文管理器的用法详解• 上下文管理器在python中的原理

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网