什么是__traceback_hide__的用法

joy*_*jee 7 python

我在一些函数中看到过这行代码

__traceback_hide__ = True 
Run Code Online (Sandbox Code Playgroud)

它有什么作用?它似乎试图压制错误追溯.在什么情况下应该隐藏回溯?

Dav*_*ett 10

__tracebackhide__可以设置为在使用PyTest时隐藏回溯中的函数.__traceback_hide__似乎在Python Paste包中用于相同的目的.

以下是paste.exceptions.collector文档对此的说法:

如果设置为true,则表示应该从缩略的回溯中隐藏框架.这样,您可以隐藏较大框架的一些复杂性,并让用户专注于自己的错误.

通过将其设置为"之前",此之前的所有帧都将被丢弃.通过将其设置为"之后",之后的所有帧将被丢弃,直到找到"重置".在每种情况下,都包括设置它的框架,除非您在该值上附加"_and_this"(例如,'before_and_this').

请注意,如果根据这些规则通常不会显示包含错误的帧,格式化程序将完全忽略它.

和类似的PyTest文档__tracebackhide__:

如果您有一个从测试中调用的测试助手函数,则可以使用pytest.fail标记来使用某个消息进行测试失败.如果在辅助函数中的某处设置__tracebackhide__选项,则测试支持函数不会显示在回溯中.

所以基本上,它们是为了避免使用测试助手函数或您知道不属于您尝试调试的问题的其他函数来混乱回溯.


Sha*_*ger 5

看起来这主要是为了 Web 框架(Sentry、werkzeug、Paste 、Django)的方便,因此框架功能不包含在框架的高级异常报告功能中。

\n

确切的行为可能因框架而异,例如,对于粘贴,它的记录如下:

\n
\n

如果设置为 true,则表示应该对缩写回溯隐藏该帧。通过这种方式,您可以隐藏较大框架的一些复杂性,并让用户专注于自己的错误。

\n

通过将其设置为“before”,该帧之前的所有帧都将被丢弃。通过将其设置为“after”,则此后的所有帧都将被丢弃,直到找到“reset”。在每种情况下,都包含设置它的帧,除非您将“_and_this”附加到该值(例如,“before_and_this”)。

\n

请注意,如果包含错误的帧通常不会根据这些规则显示\xe2\x80\x99,则格式化程序将完全忽略这一点。

\n
\n

它不是标准变量,核心 Python 解释器不提供对它的支持。

\n