Как мне подойти к отладке, начиная с записи журнала исключений Java? - PullRequest
0 голосов
/ 06 ноября 2008

Я пытался проанализировать исключения 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. В моем собственном коде я узнал бы местоположения в трассировке и знал бы, что искать. Так как же вы вообще подходите к такому исключению?

Ответы [ 3 ]

2 голосов
/ 06 ноября 2008

Этот материал немного сложно объяснить, но мой первый шаг почти всегда начинается сверху вниз и скользит вниз, пока я не увижу знакомый com.mycompany.myproject.

Учитывая номер строки, к которой у вас есть место для работы в вашем собственном коде, что часто является хорошим началом.

Редактировать: Но, перечитывая ваш вопрос, вы говорите, что это не ваш код ... так что это может быть бесполезным ответом вообще ..

1 голос
/ 07 ноября 2008

В вашем примере похоже, что вам нужно добавить какой-нибудь драйвер JDBC Oracle или что-то еще в путь к классам вашего проекта.

Но в духе вопроса, я думаю, это зависит. В этом примере Spring не очень полезен сам по себе - ошибка при создании bean-компонента. Ну и дела, спасибо за эту информацию. Однако он точно сообщает, ПОЧЕМУ произошла ошибка при создании компонента. Исключение «самого внутреннего».

Я видел другие примеры, в которых внутреннее большинство исключений будет слишком специфичным (например, NPE), в то время как внешнее исключение, которое фактически было выброшено, содержало наиболее полезное сообщение об ошибке. Это зависит от проекта.

1 голос
/ 06 ноября 2008

В вашем конкретном примере отсутствует класс. Как только вы видите такую ​​ошибку, вы знаете, что нужно исправить (либо исправив имя класса, либо обновив путь к классу, чтобы найти класс).

В целом, однако, я смотрю из своего кода в сторону сгенерированного кода, пока не найду ошибку. Например, если я получаю исключение NullPointerException, я проверяю, вызвано ли оно одним из моих классов. Однако, если это отсутствующий класс, я не найду ничего плохого в своих собственных классах, поэтому начну с другого конца трассировки стека и буду искать распознаваемую ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...