Python中如何屏蔽已捕获异常的回溯(堆栈跟踪)信息。

5

我有一段 Python 代码,用于捕获异常:

# ...
except Exception:
    # Handle the exception

当执行此代码时,回溯(堆栈跟踪)将打印到控制台。我该如何抑制它?

6
请展示其余的处理代码,但不应该打印出来。 - agf
1
你是如何运行这段代码的?能否贴出被打印的堆栈跟踪信息?你确定已经捕捉到异常了吗?一般情况下,Python只会为抛到程序入口点的异常打印堆栈跟踪信息。 - Peter Graham
3
你确定正在打印的异常是原始异常吗?如果在你的异常处理程序内部发生另一个异常,它会向外传播,并且有时很难发现它不是导致问题出错的根本原因。 - Ben
@Ben 我认为你是正确的。我认为那就是正在发生的事情。 - khatchad
一个老问题,我知道,但这至少是我在寻找的答案:https://dev59.com/vV4c5IYBdhLWcg3wqbwC#27674608 - Robert Lugg
1个回答

6

不建议使用,但是

except Exception:
    pass

将会默默忽略异常。但是,如果您不修复错误,您的程序仍然可能退出,因为在代码的下面可能会抛出另一个异常。您应该至少打印出说明发生了什么事情的消息,否则调试您的代码会变成噩梦。


2
我想处理异常,但我不想打印堆栈跟踪。在Java中,当调用printStackTrace方法时,会打印堆栈跟踪。不调用该方法可以抑制打印堆栈跟踪,但是我不确定Python中如何实现。 - khatchad
1
给定的代码将跳过堆栈跟踪打印。printStackTrace 的 Python 对应物是 sys.exc_info - brc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接