首页 > 解决方案 > “sys.excepthook 中的错误”PyQt5.10.1Python 3.6

问题描述

我的 main.py 中有一个自定义的 sys.excepthook:

def application_exception_hook(type_, value, tb):
    lines = format_exception(type_, value, tb)
    for line in lines:
        print(line)
    sys.excepthook = sys._excepthook
    sys.exit(1)

sys._excepthook = sys.excepthook
sys.excepthook = application_exception_hook

如果出现未处理的异常,控制台输出为:

Traceback (most recent call last):
Error in sys.excepthook:
Traceback (most recent call last):


Original exception was:
Traceback (most recent call last):

更换...

    for line in lines:
        print(line)

...和...

    print(lines)

...给我这个输出:

['Traceback (most recent call last):\n', '  File "D:\\...\\framework.py", line 144, in openNesting\n    foo = 123 / 0\n', 'ZeroDivisionError: division by zero\n']Error in sys.excepthook:
Traceback (most recent call last):


Original exception was:
Traceback (most recent call last):

因此,在这两种情况下都会出现“sys.excepthook 中的错误”,而在第一种情况下,在打印出所有有趣的属性之前就已经出现了错误。我想知道什么可能导致“sys.excepthook 中的错误”以及如何仅获得此输出:

Traceback (most recent call last):
File "D:\\...\\framework.py", line 144, in openNesting
foo = 123 / 0
ZeroDivisionError: division by zero

我找不到任何解决这个特定问题的主题。

标签: pyqt5python-3.6

解决方案


已解决:将 stdout 和 stderr 消息复制到 QtTextEdit 的方法中存在错误。在手动跟踪它之后,现在一切都按预期工作。


推荐阅读