在python中,即使捕获到异常,也可以跟踪引发的异常吗?
我有一个讨厌的bug,如果不通读django中的整个模型表单逻辑,我就无法解决它: 基本上,在django模型表单流程中,代码引发了ValidationError,然后在表单流程中捕获并显示错误消息 即使在程序内部处理了特定类型的异常,也可以跟踪引发的异常吗 例如: 在一个大的代码库中的一个文件,在这个文件的某个地方引发了一个异常,并且被捕获,我不知道这个文件在哪里以及哪一行在python中,即使捕获到异常,也可以跟踪引发的异常吗?,python,django,exception-handling,Python,Django,Exception Handling,我有一个讨厌的bug,如果不通读django中的整个模型表单逻辑,我就无法解决它: 基本上,在django模型表单流程中,代码引发了ValidationError,然后在表单流程中捕获并显示错误消息 即使在程序内部处理了特定类型的异常,也可以跟踪引发的异常吗 例如: 在一个大的代码库中的一个文件,在这个文件的某个地方引发了一个异常,并且被捕获,我不知道这个文件在哪里以及哪一行 1 def process_form(): 2 ...logic... 3 raise ValudationErr
1 def process_form():
2 ...logic...
3 raise ValudationError()
4 ...logic...
5 except ValudationError:
6 ...handle...
一些工具向我展示了:
第3行中提出的ValudationError我想我已经找到了一种方法,至少这是一种解决方法,即转到ValidationError的定义,并在
\uuuu init\uuu
方法中打印stacktrace:
class ValidationError(Exception):
"""An error while validating data."""
def __init__(self, message, code=None, params=None):
import traceback
print traceback.print_exc()
是的,可以这样做:
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:
对于多个异常,如下所示:
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:
欲了解更多信息,请阅读此:谢谢您的尝试,但我的问题是我不知道它在哪里引发并被抓获。您的回答假设我知道在哪里放置
打印回溯。print_exc()
,但如果我知道该行的确切位置,我的帖子无效。就我所能理解的问题而言,您有一个包含多个异常处理程序的大型代码库。。正确的?但是,您不确定实际在哪里处理异常。如果在代码库中使用适当的日志记录,问题就可以得到解决,即每个异常处理程序都只提供一条有意义的完整日志消息,这样当您看到服务器日志时,就可以识别处理异常的点。此外,您可以尝试一些工具,例如帮助跟踪异常的Sentry。创建异常对象并不一定意味着也会引发异常。它也可能是在以后的决策过程中创建和参与的。这种情况并不经常发生,但有时会发生。