是否有可能在python中跟踪引发的异常,即使它已被捕获?

时间:2014-05-05 01:37:10

标签: python django exception-handling

我有一个令人讨厌的错误,我无法解读而无需阅读django中的整个模型形式逻辑:

django custom model field in admin form gives invalid choice error

基本上正在发生的事情是django模型中的一些表单流程代码引发了ValidationError,然后它在表单进程中被捕获并显示错误消息。

是否有可能跟踪特定类型的异常,即使已经在程序中处理了它也会被引发?

例如:

大型代码库中的文件,此文件中的某个位置引发异常并被捕获,我不知道这个文件在哪里以及哪行...

1 def process_form():
2  ...logic...
3  raise ValudationError()
4  ...logic...
5  except ValudationError:
6    ...handle...

一些显示我的工具: 第3行提出了ValudationError

2 个答案:

答案 0 :(得分:0)

我认为我找到了一种方法,至少它是一种解决方法,就是转到ValidationError的定义并在__init__方法中打印堆栈跟踪:

class ValidationError(Exception):
    """An error while validating data."""
    def __init__(self, message, code=None, params=None):
        import traceback
        print traceback.print_exc()

答案 1 :(得分:0)

是的,可以这样简单地

 def process_form():
  ...logic...
  raise ValudationError()
  ...logic...
  except ValudationError as e:
      print e        ### 'e' will be an object of Exception raised
      import traceback
      print traceback.print_exc()
  ...handle...

对于多个例外,如下所示:

except (ValudationError, AttributeError) as e:

有关详细信息,您可以阅读此https://docs.python.org/2/tutorial/errors.html

相关问题