捕捉类似于信号的Python异常

捕捉类似于信号的Python异常,python,exception,signals,Python,Exception,Signals,我所问的可能不可能,但如果可能的话,会很有帮助 基本上,我希望有一种方法能够自动捕获Python脚本中的任何异常,并以一种特定的方式处理它们,即使用信号处理程序捕获信号的方式。大概是 def except_handler(signo, frame): if signo == Exception: exception_cleanup() 我不认为会有实际的信号发生,但这正是我想要的功能,能够在程序范围内处理异常,而无需显式的try/except子句。这类似于在Bash中使用trap

我所问的可能不可能,但如果可能的话,会很有帮助

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

def except_handler(signo, frame):

  if signo == Exception:
    exception_cleanup()

我不认为会有实际的信号发生,但这正是我想要的功能,能够在程序范围内处理异常,而无需显式的try/except子句。这类似于在Bash中使用
trap ERR
。在Python中有没有这样做的方法,或者try/except是我唯一的选择?

您可以尝试这样做(尽管我不推荐这样做)。然后根据类型或值进行筛选,以按照您的意愿处理异常。通常,您想要处理的任何事情都应该进入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

谢谢很高兴知道实际上有一种简单的方法可以做到这一点。肯定不是我想养成的习惯,但知道这一点很有帮助。