我不知道该怎么给我自己印的回溯画上颜色。
这给我的回溯画了颜色:
#!/bin/python3
import backtrace
backtrace.hook()
raise Exception('here')但如果我抓住了异常并打印出来..。然后没有颜色:
#!/bin/python3
import backtrace
backtrace.hook()
import traceback
try:
raise Exception('here')
except Exception:
traceback.print_exc()我知道这是两个不同的包,但他们应该能够一起工作。
如何捕获和打印颜色的异常(和堆栈跟踪)?
发布于 2021-11-05 17:32:39
backtrace内部使用做这个小把戏。当异常被引发并且未被发现。时,解释器使用三个参数调用sys.excepthook,异常类、异常实例和跟踪对象。在第一个例子中,当您调用backtrace.hook()时,backtrace库实质上将sys.excepthook设置为一个自定义函数,它可以使用异常实例执行各种魔术(着色等)
>>> def custom_hook(*args):
... print(args)
...
>>>
>>> import sys
>>> sys.excepthook = custom_hook
>>>
>>> 1 / 0 # No exception raised, instead it calls `custom_hook`
(<class 'ZeroDivisionError'>, ZeroDivisionError('division by zero'), <traceback object at 0x000001FA502B98C0>)如果引发并捕获异常,则不调用except**)**. (使用)。
>>> def custom_hook(*args):
... print(args)
...
>>>
>>> import sys
>>> sys.excepthook = custom_hook
>>>
>>> try:
... 1 / 0
... except: # Since the exception is caught here, it won't call `custom_hook`
... pass
...确切的情况发生在你的案子里。一旦异常被捕获,你就必须重新提出例外行为。
https://stackoverflow.com/questions/69857030
复制相似问题