如何在python中运行代码以在出现错误时删除对象
所以,我正在构建一个基础设施,处理自动旋转实例、设置安全组等问题 有时,在经历开发过程时,事情会破裂。处理所有事情的对象在实例化过程中会抛出一个错误,或者是无数其他错误中的一个。当这种情况发生时,我基本上要承担大量的基础设施 问题是我不知道何时/何地会抛出错误。那么,我的问题是,在出现错误的情况下,是否有任何方法可以运行一些分解代码?例如:如何在python中运行代码以在出现错误时删除对象,python,exception,Python,Exception,所以,我正在构建一个基础设施,处理自动旋转实例、设置安全组等问题 有时,在经历开发过程时,事情会破裂。处理所有事情的对象在实例化过程中会抛出一个错误,或者是无数其他错误中的一个。当这种情况发生时,我基本上要承担大量的基础设施 问题是我不知道何时/何地会抛出错误。那么,我的问题是,在出现错误的情况下,是否有任何方法可以运行一些分解代码?例如: class Foo(object): def __init__(self): # set up ec2 instance
class Foo(object):
def __init__(self):
# set up ec2 instance
raise SomeError()
def __on_error__(self):
# tear down ec2 instances
另一个约束条件是,一些分解代码可能会出错,这很好。通常情况下,当我试图拆除一些实际上还没有被实例化的东西时,就会发生这种情况。理想情况下,
\u on\u error\u
函数中的任何内容都会无声地失败,但如果不将所有内容包装在一个try/except:pass
循环中,我不确定如何实现这一点。看起来有点像是在进行某种资源管理——在这种情况下,上下文管理器非常好:
class Foo(object):
...
def __enter__(self):
return self
def __exit__(self, exc_type, exc_value,tb):
if exc_type is not None:
# exception occurred, do some exception handling specific cleanup.
self.__on_error__()
现在,您可以将其用作上下文管理器:
with Foo() as foo:
...
当您到达该命令集的末尾时,\uuuuuuuuuuuuuuu
方法将运行
请注意,如果在
Foo中引发异常,这对您没有帮助。\uuuuu init\uuuuuuu
因为上下文在Foo之后才会输入。\uuuuuu enter\uuuuuuu
返回。如果enter中发生错误,上下文是否会立即运行并退出?@SlaterTyranus-否。上下文在\uuu enter\uuuuuuu
返回之后输入。