- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我对 sys.excepthook 的工作原理感到非常困惑。鉴于以下情况,我找不到继续前进的方法,以防异常被钩子(Hook)捕获。简而言之,我从未达到打印声明,但我确信理论上可以继续。返回 True 或 False 也没有帮助吗?
import sys
from shutil import copy
from subprocess import Popen
def my_except_hook(etype, value, tb):
print("got an exception of type", etype)
if __name__ == '__main__':
sys.excepthook = my_except_hook
copy('sdflsdk')
print("here")
Popen('sdflkjdklsdj')
然后输出是:
('got an exception of type', <type 'exceptions.TypeError'>)
最佳答案
sys.excepthook 确实不打算强制转换为 VB 样式“On Error Resume Next”。可能有一种方法可以做到这一点,但你真的应该包装自己的代码来做到这一点。 system.excepthook 专为 python 交互式解释器之类的东西而设计,以便它们打印异常并将您返回到交互式 shell。要实现您寻求的简历行为,您应该考虑这样做:
import sys
from shutil import copy
from subprocess import Popen
if __name__ == '__main__':
try:
copy('sdflsdk')
except:
pass
print("here")
try:
Popen('sdflkjdklsdj')
except:
pass
关于python - python 中的 sys.excepthook 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11365549/
我正在尝试设置自定义 sys.excepthook在多进程上。 但它不起作用。 在下面的代码中,我预计会打印 This is my traceback function:字符串作为错误消息的前缀,但它
我有一个应用程序正在运行一些子进程,我已经成功地为主进程设置了 sys.excepthook 异常处理。现在,我想为子进程上的同一个钩子(Hook)设置它。我希望它能像复制我在主进程中使用的确切代码行
我正在设置 sys.excepthook 以便我可以记录发生的每个异常。我们不写入日志,而是使用以下示例: def excepthook(self, type_, value, traceback):
我正在尝试设计一个 Python 程序,使用日志记录模块记录所有未捕获的异常。我通过使用 sys.excepthook 函数来覆盖默认的异常处理来做到这一点。我注意到如果我直接从命令行运行该程序,它工
我的应用记录了未处理的异常。 # app.py import logging import sys logger = logging.getLogger(__name__) def excepthoo
我尝试自定义 sys.excepthook 的行为,如 the recipe 所述. 在 ipython 中: :import pdb, sys, traceback :def info(type,
我正在使用 Python 2.5 并尝试在我的程序中使用自定义的 excepthook。在主线程中它工作得很好。但是在使用线程模块启动的线程中,通常的 excepthook 会被调用。 这是一个显示问
我正在尝试创建一个平均求解器,它可以采用一个元组并对数字进行平均。我想使用 except 钩子(Hook)给出错误消息,然后从 while 循环的开头继续。 “继续”不起作用。 import sys
我想将全局异常处理对象添加到我的 Flask web 项目中。在创建应用程序类的主模块中,我添加了代码来覆盖 sys.excepthook。这是简单的测试代码: import sys def my_e
目标是在下面的代码中解析 os 依赖项并执行 ls 命令。 我想知道如何使用双星来完成我在下面的评论中提出的内容。 我已经知道我可以通过 traceback 获取行号 也就是说,我想知道是否有可能在给
Qt 静静地捕捉 Python 回调中的异常并使用错误代码退出程序。这可以用一个简短的例子来证明: import sys from PyQt5 import QtWidgets # _exceptho
假设我有这样的东西,它向 logging.critical() 发送未经处理的异常: import sys def register_handler(): orig_excepthook =
如果我尝试执行这段代码,为什么 sys.excepthook 函数没有被调用? import sys; def MyExcepthook(ex_cls, ex, tb): print("Oop
这个问题在这里已经有了答案: cannot override sys.excepthook (5 个回答) 5年前关闭。 我正在 try catch 所有异常并使用以下代码将它们记录到日志文件中,但由
我想将 pytest aserts 的结果放入日志中。 首先我尝试了这个解决方案 def logged_assert(self, testval, msg=None): if not test
Ubuntu 的 apport 的 sys.excepthook 对我来说总是崩溃,可能是因为我在这台机器上没有 root 权限。反正对我自己的发展也没用。我怎样才能摆脱它? 最佳答案 我不确定为什么
我对 sys.excepthook 的工作原理感到非常困惑。鉴于以下情况,我找不到继续前进的方法,以防异常被钩子(Hook)捕获。简而言之,我从未达到打印声明,但我确信理论上可以继续。返回 True
注意:我没有尝试在 Windows 下或使用 2.7.3 以外的 Python 版本重现下面描述的问题。 引出相关问题的最可靠方法是将以下测试脚本的输出通过 : 进行管道传输。 (在 bash 下):
我正在尝试处理运行线程时发生的未捕获异常。位于 docs.python.org 的 Python 文档声明“可以覆盖 threading.excepthook() 以控制如何处理 Thread.run
我写了一个 bash 脚本,它正在做我想要它做的事情,但踢出以下错误: 在文件对象析构函数中关闭失败:sys.excepthook 丢失丢失 sys.stderr 我完全不知道如何解决这个问题。这是脚
我是一名优秀的程序员,十分优秀!