我所要求的可能是不可能的,但如果是的话,它会非常有用。
基本上,我希望有一种方法可以自动捕获Python脚本中的任何异常,并以特定的方式处理它们,即使用信号处理程序捕获信号的方式。它就像是
def except_handler(signo, frame):
if signo == Exception:
exception_cleanup()
我不会想象有一个实际的信号正在发生但是我正在寻找的那种功能,能够在没有明确的try / except子句的情况下处理程序范围内的异常。它类似于在Bash中使用trap ERR
。有没有办法在Python中做这样的事情,或者是尝试/除了我唯一的选择?
答案 0 :(得分:2)
你可以尝试这样的东西(虽然我不推荐它)。然后根据需要过滤类型或值以处理异常。通常,您想要处理的任何内容都应该在try / except / finally场景中,然后对异常类型进行过滤。在大多数情况下,盲目捕捉所有异常通常是一个坏主意。
import sys
# Custom exception handler
def exception_handler(type, value, traceback):
# Write whatever you want to
print "Error Recognized"
# Call the default exception hook
sys.__excepthook__(type, value, traceback)
sys.excepthook = exception_handler
raise Exception("boop")
>> Error Recognized
>> Traceback (most recent call last):
>> raise Exception("boop")
>> Exception: boop