如何处理Python中except子句抛出的异常?
def safeLoopingCall(self, *args, **kwargs):
try:
self.loopingCall(*args, **kwargs)
except:
self.log.exception("exception in task")如果记录器中发生异常,我们就会退出。避免这种情况的最佳实践是什么?您是否用另一个try-except块包围except (听起来很可怕)?这个函数被认为永远不会传播任何异常。
发布于 2010-12-08 00:22:03
一般来说,除了block之外,拥有一个通用的设计并不是一个好的设计,因为它可能会掩盖编程错误。这就是为什么它看起来有点糟糕的原因。
如果你真的想在任何情况下优雅地失败,那么是的,在except子句中放一个嵌套的try -但是记录完整的回溯,否则它可能真的很难调试。
发布于 2012-09-05 16:36:40
顺便说一句,你可以看看我的CausedException class。在这种情况下,它可能会对您有所帮助;您必须捕获这两个异常,将它们包装到CausedException中,然后以这两个异常为理由引发一个CausedException。这样,所有涉及的堆栈跟踪都将在调试消息中可用。
https://stackoverflow.com/questions/4378786
复制相似问题