关于try catch:可以检测我是否在Python中的’except’子句中?

Possible to detect if I'm inside an 'except' clause in Python?

我想要的是:

1
2
3
4
5
6
try:
    print inExceptClause()
    1/0
except Exception:
    print inExceptClause()
print inExceptClause()

…打印出来:

1
2
3
False
True
False


我认为你这样做是错误的。您的"用例"似乎可以从代码中的多个点调用一个函数,有时可以从异常处理程序中调用它。在这个函数中,您想知道是否抛出了异常,对吗?

关键是,你不想在一个对调用代码一无所知的函数中使用这种逻辑…理想情况下,大多数函数都没有。

也就是说,您可能希望执行该函数,但只是部分执行。所以我建议两种选择中的一种:

  • 将函数拆分为多个函数:一个函数具有额外的功能,然后调用另一个具有可重用功能的函数。只需在需要时调用所需的函数即可。

  • 向函数添加一个参数:一个简单的布尔值可能足够输入或排除该函数的一小部分。

  • 现在,这并不是你问题的真正答案,但我感觉你在错误的角度看待你的问题…因此,上述建议。


    SysExcIf()

    This function returns a tuple of three values that give information
    about the exception that is currently being handled. (...) If no
    exception is being handled anywhere on the stack, a tuple containing
    three None values is returned.

    另请参见以下问题:

    当没有异常处于活动状态时,python 3跟踪失败当Python3中已存在异常时引发异常