当前位置: 首页 > 面试题库 >

隐藏回溯,除非设置了调试标志

卢勇
2023-03-14
问题内容

除非设置了详细或调试标志,否则隐藏隐藏错误的惯用python方法是什么?

示例代码:

their_md5 = 'c38f03d2b7160f891fc36ec776ca4685'
my_md5 = 'c64e53bbb108a1c65e31eb4d1bb8e3b7' 
if their_md5 != my_md5:
    raise ValueError('md5 sum does not match!')

现在已有输出,但只有在使用时才需要foo.py --debug

Traceback (most recent call last):
  File "b:\code\apt\apt.py", line 1647, in <module>
    __main__.__dict__[command] (packages)
  File "b:\code\apt\apt.py", line 399, in md5
    raise ValueError('md5 sum does not match!')
ValueError: md5 sum does not match!

所需的正常输出:

ValueError: md5 sum does not match!

这是一个测试脚本:https :
//gist.github.com/maphew/e3a75c147cca98019cd8


问题答案:

简短的方法是使用sys模块并使用以下命令:

sys.tracebacklimit = 0

使用您的标志来确定行为。

例:

>>> import sys
>>> sys.tracebacklimit=0
>>> int('a')
ValueError: invalid literal for int() with base 10: 'a'

更好的方法是使用和异常钩子:

def exception_handler(exception_type, exception, traceback):
    # All your trace are belong to us!
    # your format
    print "%s: %s" % (exception_type.__name__, exception)

sys.excepthook = exception_handler

编辑:

如果您仍然需要退回原始挂钩,请执行以下操作:

def exception_handler(exception_type, exception, traceback, debug_hook=sys.excepthook):
    if _your_debug_flag_here:
        debug_hook(exception_type, exception, traceback)
    else:
        print "%s: %s" % (exception_type.__name__, exception)

现在,您可以将调试钩子传递给处理程序,但是您很可能希望始终使用源自的钩子sys.excepthook(因此,不传递任何东西debug_hook)。Python在定义时间绑定了默认参数
一次 (常见陷阱…),这使得它始终在替换之前使用相同的原始处理程序。



 类似资料:
  • 我正在尝试构建一个带有Inno Setup的安装程序,该安装程序基于一些配置选项运行其他安装程序。为了简单起见,假设我有20个安装程序,可以在5种不同的配置中设置,其中每个配置都有一些必需的和一些可选的安装程序。配置A可能需要安装程序1、2、5、6,并有11、13和14的选项。配置B可能需要1、2、3、9,并有12、19和20的选项。以此类推。 我为每个安装程序准备了一个组件。理想情况下,我想使用

  • 问题内容: 有没有办法隐藏标签栏并删除剩余空间(大约50像素)? 我试过了 没运气。我看到空白。 问题答案: 如果您在隐藏的标签栏下仍看到黑色条纹,是否尝试 在 此处选择 “在不透明的条下延伸边缘” ? 还要确保仍然选择 “底部栏” 。希望能帮助到你!

  • 在下面的片段中,我有两种方法来选择一个项:用datalist输入和传统的用Options选择。

  • 我试图实现贝宝支付网关一旦提交联系表。 为此,我将表单数据存储在数据库中,并在付款完成后从保存的id中检索数据。保存该db ID在隐藏字段发送到贝宝网址。 我试过了,值是返回的。但是当我在wpcf7mail中获取表单数据时,它是空的。 未设置隐藏字段值。有人能帮我设置隐藏字段值并在 注意:我在发送邮件之前尝试了hook,后来才知道我们不能在发送邮件之前更改值。因此,我尝试将值也设置为隐藏字段是我试

  • 在直播管理页面点击 “回调设置” ,可以 开启回调通知 并 设置回调地址 ,用于直播开始、直播结束、直播录制、离线回放、回放重置后的通知反馈。 关于直播回调的具体功能及使用方法,请参考:回调接口开发指南 。

  • 我需要隐藏或删除后退按钮或后退图标从AppBar是可能的吗? 如果可能,那么如何? 我设置了,但它仍然存在,没有任何变化