我一直在尝试解析日志中出现的Java异常,以寻找我正在使用的一些代码。我的问题是,你是从上到下还是自下而上解析异常跟踪?它看起来像这样:
ERROR [main]</b> Nov/04 11:03:19,440 [localhost].[/BookmarksPortlet].[] - Exception sending context...
org.springframework.beans.factory.BeanCreationException: Error creating bean...: Cannot Resolve reference...: Error creating bean... nested exception... nested exception is org.hibernate.HibernateException: Dialect class not found: org.hibernate.dialect.Oracle10gDialect
Caused by:
... [similar exceptions and nested exceptions]
...
at [start of stack trace]
这样的事情。显然,我不是在寻找这个特定异常的答案,但是你如何解析像这样的异常跟踪呢?你是从顶级错误开始,还是从最内层的错误开始(在“由...引起的”条款下)?
这个问题对我来说更难,因为我没有处理我写的代码。我正在编辑XML配置,所以我甚至不是在寻找Java代码。在我自己的代码中,我会识别跟踪中的位置,并知道要查找的内容。那么你如何处理这样的异常呢?
答案 0 :(得分:2)
这个东西有点难以解释,但我的第一步几乎总是从顶部开始并逐渐减少,直到我看到熟悉的com.mycompany.myproject
。
如果附加了行号,那么您可以在自己的代码中找到合适的地方,这通常是一个良好的开端。
编辑但是,重新阅读你的问题,你说这不是你的代码......所以这可能不是一个有用的答案..
答案 1 :(得分:1)
在您的特定示例中,缺少一个类。一旦看到类似的错误,就会知道需要修复的内容(更正类名或更新类路径以便找到类)。
但是,一般情况下,我会从代码中查看生成的代码,直到找到错误。例如,如果我得到NullPointerException,我会检查它是否是由我的一个类引起的。但是,如果它是一个缺少的类,我不会发现我自己的类有任何问题,所以我将从堆栈跟踪的另一端开始,寻找可识别的错误。
答案 2 :(得分:1)
在您的示例中,您似乎需要在项目的类路径中添加一些Oracle JDBC驱动程序。
但问题的精神,我认为这取决于。在这个例子中,Spring对它自己没有很大的帮助 - 创建bean的错误。哎呀,谢谢你的信息。但是,它确切地告诉您为什么创建bean时出错。 “最内在”的例外。
我已经看到其他示例,其中最内部异常将过于具体(如NPE),而在外部实际抛出的异常具有最有用的错误消息。它因项目而异。