gpt4 book ai didi

python - 异常如何知道它是否正在被处理?

转载 作者:行者123 更新时间:2023-12-01 02:18:26 24 4
gpt4 key购买 nike

引发时,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')

(...因为 __init__ 在实例化时执行,无论是否处理错误。)

是否有一种(简单且Pythonic)方法可以使异常在处理时表现不同?

最佳答案

您不应该将 SystemExit 视为正常异常。所有高级语言都有一个立即关闭进程的函数,在Python中就是sys._exit(),但也有sys.exit()其作用有点相同,但允许您的 finally block 首先运行,并作为异常实现。

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

关于python - 异常如何知道它是否正在被处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48153818/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com