Как делают я в Java добавляю stacktrace к своей распечатке отладки

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

11
задан Johan Lübcke 10 September 2008 в 18:04
поделиться

7 ответов

9
ответ дан 3 December 2019 в 01:09
поделиться

Если Вы используете log4j

Exception e = new Exception();
log.error("error here", e);

распечатает stacktrace к Вашему журналу.

18
ответ дан 3 December 2019 в 01:09
поделиться

Если Вы хотите сохранить отслеживание стека в Строку, можно сделать это;

String exception = "";
for (StackTraceElement element : e.getStackTrace())
   exception += element.toString() + "\n";

Где e является, очевидно, исключением.

Кроме того, звучит очень странным автоматически сгенерировать собственное Исключение только для нахождения, получают отслеживание стека для отладки. Получите Eclipse и использование, это - режим отладки, это является действительно потрясающим.

6
ответ дан 3 December 2019 в 01:09
поделиться

А также что сказанный @jjnguy, если у Вас нет исключения, можно также назвать Thread.getStackTrace ().

3
ответ дан 3 December 2019 в 01:09
поделиться

Просто создание произвольного исключения добивается цели для меня:

System.out.println("Oops, the bad thing happened");
new IllegalStateException().printStackTrace();
4
ответ дан 3 December 2019 в 01:09
поделиться

Необходимо ловить исключение в блоке try-catch.

e.getStackTrace();

Это возвращает StackTraceElement [], что можно затем интерпретировать.

Также:

e.printStackTrace()

... распечатает stacktrace.

2
ответ дан 3 December 2019 в 01:09
поделиться

Просто потому, что мне самому это было нужно:

На основе ответа Как мне найти вызывающего метода с помощью трассировки стека или отражения? , вы можете получить стек вызовов, используя

StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace()

Затем вы обрабатываете и распечатываете / регистрируете все, что вам интересно.

1
ответ дан 3 December 2019 в 01:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: