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