可以检测我是否在Python中的'except'子句中?

时间:2012-10-19 03:33:37

标签: python try-catch except

是的,我想要的是:

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

...会打印出来:

False
True
False

2 个答案:

答案 0 :(得分:3)

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

重点是,你不希望在一个已经(或者应该)不知道调用代码的函数中拥有那种逻辑 ...理想情况下,你的大多数功能不会。

那就是说,你可能想要执行那个功能,但只是部分执行。所以我建议选择以下两个选项之一:

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

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

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

答案 1 :(得分:0)

sys.exc_info()

  

此函数返回三个提供信息值的元组   关于当前正在处理的异常。 (...) 如果不   异常正在栈上的任何地方处理,包含一个元组   返回三个无值。

另见这些问题:

Python 3 traceback fails when no exception is active
Raising exceptions when an exception is already present in Python 3