如何处理Python中的except子句引发的异常?
def safeLoopingCall(self, *args, **kwargs):
try:
self.loopingCall(*args, **kwargs)
except:
self.log.exception("exception in task")
如果记录器中发生异常,我们就会离开。什么是避免这种情况的最佳做法?除了另一个尝试 - 除了块(听起来很糟糕),你是否包围了一个?该函数应该永远不会传播任何异常。
答案 0 :(得分:5)
一般来说,除了块之外,有一个全能的设计并不好,因为它可以掩盖编程错误。恕我直言,这就是为什么它看起来有点可怕。
如果你真的想要无缘无故地失败,那么是的,在except子句中放置一个嵌套的try - 但是记录完整的回溯,否则它会变得非常难以调试。
答案 1 :(得分:0)
FWIW,您可以查看我的CausedException class。也许它可以帮助你在这种情况下;你必须捕获两个异常,将它们包装到CausedException中然后应该用这两个原因引发一个CausedException。这样,所有涉及的堆栈跟踪都将在调试消息中提供。