我想要一个Exception
类,它在抛出时“做某事”。
虚拟示例:
class BrowserEatRamError(Exception):
def __raise__(self):
os.system('Killall -9 chrome')
super(BrowserEatRamError, self).__raise__()
当我用以下方法扔它时:
raise BrowserEatRamError('Chrome is eating all ram')
Chrome应该在抛出异常之前关闭。有什么神奇的方法可以实现吗?如果不是,那么实现类似行为的最优雅方式是什么?你知道吗
编辑:
我不喜欢使用init,因为即使在try缓存中引发异常,也会调用init。你知道吗
不存在这种特殊方法。所有这些都记录在Data model中。你知道吗
假设您使用的是创建和初始化错误,然后引发错误的(相对较好的)实践,即
而不是:
您可以简单地重载
__intit__
方法(调用以初始化它)。你知道吗你也可以试试看。如果经常这样做,可以使用上下文管理器。你知道吗
在这两种方式中,如果
on_raise
方法返回True
,异常将停止传播。如果它返回False
(或其他错误值,如None
),它将被进一步抛出。你知道吗您也可以在没有上下文管理器的情况下通过覆盖^{} 来实现这一点。这类似于整个程序的
__exit__
,在程序即将结束时调用,默认情况下显示错误。请注意,如果另一个程序覆盖了它,并且适用于所有情况,包括可能导致意外行为的其他模块,那么这将不起作用。你知道吗而且,您不能停止异常并继续。你知道吗
相关问题 更多 >
编程相关推荐