假设一个结构良好的 OOP Python 应用程序,其中对方法的每个调用都包装在一个 try 块中。现在假设我正在调试这个应用程序,并且我希望实际抛出异常!几乎不可能替换每一try:
行if True:
并注释掉"""
这些except:
部分,只是为了调试。有什么方法可以告诉 Python 解释器特定代码部分引发的异常应该停止程序执行并将异常信息打印到标准输出?
Kubuntu Linux 上的 Python 2.7.3 或 3.2.3。
“假设一个结构良好的 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.
这听起来像是调试器的工作。我只熟悉PyCharm的调试器,您可以使用它为任何异常设置异常断点。
如果我正确理解了您的问题,我认为您需要堆栈跟踪以进行调试。在这种情况下,您可以在任何需要的地方使用回溯模块:
import traceback
try:
func()
except Exception,e:
print traceback.format_exc()
或者使用调试器 - pdb