- /* 上下文管理器必须有__enter__和__exit__方法 */
- class MyResource:
- def __enter__(self):
- print('链接资源')
- return self
- /*__exit__返回 True 表示异常只会在__exit__中被捕获, 不会继续传递到 with 语句的之外的 except 中, 如果返回 false, 则会把异常也传递到 except 中 */
- def __exit__(self,exc_type,exc_value,tb):
- if tb:
- print('链接进程异常')
- else:
- print('链接进程无异常')
- print('关闭资源链接')
- return False
- def query(self):
- print('query data')
- try:
- /*resource 是上下文管理器__enter__返回的那个值 */
- with MyResource() as resource:
- 1/0
- resource.query()
- except Exception as ex:
- pass
来源: http://www.bubuko.com/infodetail-3108588.html