Python 异常如何知道它是否';正在处理什么?

Python 异常如何知道它是否';正在处理什么?,python,python-3.x,exception,Python,Python 3.x,Exception,当引发时,SystemExit会导致解释器退出,除非处理了异常 try: raise SystemExit() except SystemExit: print('not today') # Continue flow... 我想模仿这种行为,编写自己的异常,只有在未捕获异常时才执行一些代码 显然,这是行不通的: class MyFatalError(Exception): def __init__(self): import sys

当引发时,
SystemExit
会导致解释器退出,除非处理了异常

try:
    raise SystemExit()
except SystemExit:
    print('not today')
# Continue flow...
我想模仿这种行为,编写自己的异常,只有在未捕获异常时才执行一些代码

显然,这是行不通的:

class MyFatalError(Exception):

    def __init__(self):
        import sys
        sys.exit()

try:
    raise MyFatalError()
except MyFatalError:
    print('never gets here')
(…因为无论是否处理错误,
\uuuu init\uuuu
都会在实例化时执行。)


在处理异常时,是否有一种(简单且类似python的)方法可以使异常的行为有所不同?

您不应该将
SystemExit
视为正常异常。所有高级语言都有一个立即关闭进程的函数,这就是python中的
sys.\u exit()
,但是还有一个
sys.exit()
函数也有类似的功能,但是允许您的
finally
块首先运行,并作为异常实现


应该通过在应用程序的最低级别上使用
try-except
块来完成您想要的操作。行为应该在处理程序代码中,而不是在异常中。

尝试……除非……否则应该这样做。@Dschoni我想问的是,异常如何知道它是否正在被处理,并且可以基于此更改行为。我不是问如何处理异常。我的
SystemExit
示例演示了它至少是由标准库中的一些异常实现的。