1

Ie, what I want would be:

try:
    print inExceptClause()
    1/0
except Exception:
    print inExceptClause()
print inExceptClause()

... which would print out:

False
True
False
4

2 回答 2

3

我认为你的做法是错误的。您的“用例”似乎可以从代码中的多个点调用一个函数,有时会从异常处理程序中调用它。在该函数中,您想知道是否引发了异常,对吗?

关键是,您不希望在(或不应该)对调用代码一无所知的函数中拥有这种逻辑......理想情况下,您的大多数函数都不会。

也就是说,您可能想要执行该功能,但只是部分执行。所以我建议以下两种选择之一:

  1. 将函数拆分为多个函数:一个函数具有额外的功能,并且会依次调用另一个具有可重用功能的函数。只需在需要时调用您需要的函数。

  2. 向函数添加一个参数:一个简单的布尔值可能足以包含或排除该函数的一小部分。

现在,这并不是您问题的真正答案,但我觉得您正在以错误的角度看待您的问题......因此上述建议。

于 2012-10-19T07:39:48.033 回答
0

sys.exc_info()

此函数返回三个值的元组,这些值提供有关当前正在处理的异常的信息。(...) 如果堆栈上的任何地方都没有处理异常,则返回一个包含三个 None 值的元组。

另请参阅以下问题:

当没有异常处于活动状态时,Python 3 回溯失败 当
Python 3 中已经存在异常时引发异常

于 2012-10-19T09:20:42.260 回答