不要捕获异常,即使是在try块中也是如此

时间:2013-06-10 13:24:19

标签: python exception

假设一个结构良好的OOP Python应用程序,其中对方法的每次调用都包含在try块中。现在假设我正在调试这个应用程序,我希望实际抛出异常!几乎不可能用try:替换每个if True:行并注释掉""" except:部分,只是为了调试。有没有办法告诉Python解释器,特定部分代码抛出的异常应该停止程序执行并将异常信息打印到stdout?

Kubuntu Linux上的Python 2.7.3或3.2.3。

3 个答案:

答案 0 :(得分:5)

  

“假设一个结构良好的OOP Python应用程序,其中对方法的每次调用都包含在try块中......”

这对我来说听起来不太合理。异常处理的基本原则之一是仅处理您知道如何处理的例外情况。这是您将看到的常见“不要使用裸露的除外”声明背后的驱动原则:

try:
   do_something()
except:   #BAD BAD BAD
   react_to_exception()

“由特定部分代码引发”......我们谈论的代码部分有多具体?如果它是一个块,你可以随时重新加注:

try:
    do_something()
except ValueError as e:
    raise e  # or `raise` or `raise SomeOtherError() from e` in more modern pythons.

答案 1 :(得分:2)

这听起来像是调试器的工作。我只熟悉PyCharm的调试器,您可以使用它为任何异常设置异常断点。

答案 2 :(得分:1)

如果我正确理解了您的问题,我认为您希望堆栈跟踪用于调试目的。在这种情况下,您可以在任何地方使用traceback模块:

import traceback

try:
    func()
except Exception,e:
    print traceback.format_exc()

或者使用调试器--pdb

相关问题