捕获Python异常与信号类似

时间:2014-07-07 20:06:18

标签: python exception signals

我所要求的可能是不可能的,但如果是的话,它会非常有用。

基本上,我希望有一种方法可以自动捕获Python脚本中的任何异常,并以特定的方式处理它们,即使用信号处理程序捕获信号的方式。它就像是

def except_handler(signo, frame):

  if signo == Exception:
    exception_cleanup()

我不会想象有一个实际的信号正在发生但是我正在寻找的那种功能,能够在没有明确的try / except子句的情况下处理程序范围内的异常。它类似于在Bash中使用trap ERR。有没有办法在Python中做这样的事情,或者是尝试/除了我唯一的选择?

1 个答案:

答案 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