首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >__traceback_hide__的用法是什么

__traceback_hide__的用法是什么
EN

Stack Overflow用户
提问于 2016-09-07 04:39:52
回答 4查看 3.4K关注 0票数 16

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

代码语言:javascript
复制
__traceback_hide__ = True 

是干什么的呢?它似乎是在试图抑制错误跟踪。在什么情况下,追溯应该被隐藏?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-09-07 05:05:15

可以将__tracebackhide__设置为在使用PyTest时从跟踪中隐藏函数。在Python粘贴包中使用__traceback_hide__似乎是为了同样的目的。

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

如果设置为true,则表示框架不应被缩写的跟踪所隐藏。这样,您就可以隐藏一些更大的框架的复杂性,让用户关注自己的错误。 通过将其设置为“之前”,在此之前的所有帧都将被丢弃。通过将其设置为“后”,那么在此之后的所有帧都将被丢弃,直到找到“重置”为止。在每种情况下,都包括设置它的框架,除非将'_and_this‘附加到值(例如,'before_and_this')。 注意,如果包含错误的框架通常不会按照这些规则显示,格式化程序将完全忽略这一点。

PyTest文档在其相似的__tracebackhide__

如果您有一个从测试中调用的测试助手函数,您可以使用pytest.fail标记来失败带有特定消息的测试。如果您在助手函数中的某个地方设置了__tracebackhide__选项,那么测试支持函数将不会出现在跟踪中。

因此,基本上,它们是为了避免将测试助手函数或其他您知道不是您正在尝试调试的问题的一部分的函数弄乱您的跟踪。

票数 20
EN

Stack Overflow用户

发布于 2016-09-07 04:58:12

看起来这是主要是为web框架提供方便。 (Sentry、werkzeug、粘贴、Django)来实现的,因此框架函数不包含在框架的高级异常报告功能中。

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

如果设置为true,则表示框架不应被缩写的跟踪所隐藏。这样,您就可以隐藏一些更大的框架的复杂性,让用户关注自己的错误。 通过将其设置为“之前”,在此之前的所有帧都将被丢弃。通过将其设置为“后”,那么在此之后的所有帧都将被丢弃,直到找到“重置”为止。在每种情况下,都包括设置它的框架,除非将'_and_this‘附加到值(例如,'before_and_this')。 注意,如果包含错误的框架通常不会按照这些规则显示,格式化程序将完全忽略这一点。

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

票数 3
EN

Stack Overflow用户

发布于 2016-09-07 05:01:44

在搜索"python __traceback_hide__“时,我了解到,它的目的是让一个复杂的框架隐藏其内部工作的一部分,方法是从异常输出中抑制一些堆栈帧,这样用户就不会混淆大量无关的输出。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39361321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档