异常中的Python异常

时间:2010-12-07 16:09:19

标签: python exception-handling

如何处理Python中的except子句引发的异常?

def safeLoopingCall(self, *args, **kwargs):
    try:
        self.loopingCall(*args, **kwargs)
    except:
        self.log.exception("exception in task")

如果记录器中发生异常,我们就会离开。什么是避免这种情况的最佳做法?除了另一个尝试 - 除了块(听起来很糟糕),你是否包围了一个?该函数应该永远不会传播任何异常。

2 个答案:

答案 0 :(得分:5)

一般来说,除了块之外,有一个全能的设计并不好,因为它可以掩盖编程错误。恕我直言,这就是为什么它看起来有点可怕。

如果你真的想要无缘无故地失败,那么是的,在except子句中放置一个嵌套的try - 但是记录完整的回溯,否则它会变得非常难以调试。

答案 1 :(得分:0)

FWIW,您可以查看我的CausedException class。也许它可以帮助你在这种情况下;你必须捕获两个异常,将它们包装到CausedException中然后应该用这两个原因引发一个CausedException。这样,所有涉及的堆栈跟踪都将在调试消息中提供。