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中已存在异常时引发异常