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