flask 上下文(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 语法块内有异常发生时 ,会抛出异常给调用者 。
classFile: def__enter__(self): returnfile_obj def__exit__(self,exc_type,exc_value,exc_tb): #with退出时释放文件资源 file_obj.close() #如果with内有异常发生抛出异常 ifexc_typeisnotNone: raiseexception创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!