Python中的异常中的异常
在Python中,如何处理except语句抛出的异常呢?
def safeLoopingCall(self, *args, **kwargs):
try:
self.loopingCall(*args, **kwargs)
except:
self.log.exception("exception in task")
如果在记录日志的时候发生了异常,那我们就没办法继续了。有什么好的方法可以避免这种情况吗?你会在一个except语句外面再加一个try-except块吗(听起来很糟糕)?这个函数本来就不应该让任何异常继续传播出去。
2 个回答
0
顺便说一下,你可以看看我的 CausedException 类。也许这对你有帮助;你需要捕获两个异常,把它们放进 CausedException 中,然后抛出一个包含这两个异常作为原因的 CausedException。这样,所有相关的错误追踪信息都会在调试信息中显示出来。
5
一般来说,使用一个“万用”异常处理块并不是一个好的设计,因为这样可能会隐藏一些编程错误。在我看来,这就是为什么它看起来有点糟糕。
如果你真的想要无论发生什么都优雅地处理错误,那可以在异常处理块里面再放一个尝试块——但一定要记录完整的错误追踪信息,否则调试起来会非常困难。