/*上下文管理器必须有__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 Falsedef query(self):print('query data')try:/*resource是上下文管理器__enter__返回的那个值*/ with MyResource() as resource:1/0resource.query() except Exception as ex:pass