Java Stacktrace отключается слишком рано

#java #eclipse #stack-trace

#java #eclipse #трассировка стека

Вопрос:

Иногда у меня есть длинная цепочка (вызванная x, вызванная y) в трассировке стека, которая резко обрывается, прежде чем перейти к тому, что, как я подозреваю, является хорошей частью. Хорошая часть — это код, который я написал и над которым имею контроль, а не различный усовершенствованный сторонний код, который я использую (сервер, JSP и т.д.), Который, вероятно, не содержит ошибки. Трассировка стека завершится чем-то вроде:

…. и еще 70.

Что я могу сделать в этой ситуации? Есть ли способ сообщить Java, чтобы она предоставляла более полную трассировку стека?

Я работаю в Eclipse.

Комментарии:

1. Я обновил свой ответ примером на случай, если вы пропустили это.

Ответ №1:

Этого не происходит, но подсказка в том, что stacktrace все еще там.

Этот ... 70 more. материал является сокращением от: «… и отсюда это то же самое, что и то, причиной чего я являюсь «.

Итак, просто прокрутите вверх одно исключение и посмотрите на нижние 70 строк этого. (и, возможно, это 20 строк stacktrace, а затем ‘… и еще 50’, в этом случае повторно применяйте этот принцип).

Простой тест:

 class Example {
    public static void main(String[] args) {
        foo();
    }

    static void foo() {
        bar();
    }

    static void bar() {
        try {
            throw new RuntimeException("Cause");
        } catch (Exception e) {
            throw new RuntimeException("Actual", e);
        }
    }
}
  

это выводит:

 Exception in thread "main" java.lang.RuntimeException: Actual
    at Example.bar(Example.java:14)
    at Example.foo(Example.java:7)
    at Example.main(Example.java:3)
Caused by: java.lang.RuntimeException: Cause
    at Example.bar(Example.java:12)
    ... 2 more
  

Вы можете вычислить правильный stacktrace вручную, потому что пример настолько прост. Еще 2? Они:

     at Example.foo(Example.java:7)
    at Example.main(Example.java:3)
  

— те же 2 строки, на которые заканчивается то, что было причиной ‘Cause’ (‘Actual’).