面试题答案
一键面试class ResourceManager:
def __init__(self):
# 模拟初始化资源,例如打开文件
self.file = open('test.txt', 'w')
def __enter__(self):
return self.file
def __exit__(self, exc_type, exc_value, traceback):
# 关闭文件,释放资源
self.file.close()
if exc_type == ZeroDivisionError:
print(f"捕获到除零错误: {exc_value}")
# 可以在这里进行额外的错误处理
return True # 返回True表示异常已处理,不再向上传播
with ResourceManager() as file:
try:
result = 1 / 0
file.write(str(result))
except ZeroDivisionError:
pass
上述代码实现了一个简单的上下文管理器 ResourceManager
,在 __exit__
方法中关闭打开的文件,并处理 ZeroDivisionError
异常。如果发生除零错误,会打印错误信息并返回 True
以表明异常已处理。在 with
块内尝试进行除零运算,即使发生异常,文件也会被正确关闭。