Что такое использование метода printStackTrace () в Java?
Я прохожу через программу сокета. В нем printStackTrace вызывается на объект IOException в блоке catch.
Что же на самом деле делает printStackTrace()?
catch(IOException ioe)
{
ioe.printStackTrace();
}
Я не знаю своего предназначения. Для чего он используется?
8 ответов:
Это метод на экземплярах
Это очень простой, но очень полезный инструмент для диагностики исключений. Он говорит вам, что произошло и где в коде это произошло. Вот пример того, как это может быть использовано на практике:Exception, который выводит трассировку стека экземпляра вSystem.err.try { // ... } catch (SomeException e) { e.printStackTrace(); }
Мне тоже было любопытно, поэтому я просто собрал небольшой пример кода, где вы можете увидеть, что он делает:
try { throw new NullPointerException(); } catch (NullPointerException e) { System.out.println(e); } try { throw new IOException(); } catch (IOException e) { e.printStackTrace(); } System.exit(0);Звоню
println(e):
java.lang.NullPointerExceptionЗвоню
e.printStackTrace():java.io.IOException at package.Test.main(Test.java:74)
Это помогает отследить исключение. Например, вы пишете некоторые методы в своей программе, и один из ваших методов вызывает ошибку. Затем printstack поможет вам определить, какой метод вызывает ошибку. Стек поможет примерно так:
Сначала ваш основной метод будет вызван и вставлен в стек, затем второй метод будет вызван и вставлен в стек в порядке ЛИФО, и если какая-либо ошибка произойдет где-то внутри любого метода, то этот стек поможет идентифицировать этот метод.
printStackTrace()помогает программисту понять, где возникла реальная проблема.printStacktrace()является методом классаThrowableпакетаjava.lang. Он печатает несколько строк в консоли вывода. Первая строка состоит из нескольких строк. Он содержит имя подкласса Throwable и информацию о пакете. Начиная со второй строки, он описывает положение ошибки / номер строки, начинающийся сat.Последняя строка всегда описывает место назначения, на которое влияет ошибка / исключение. То вторая последняя строка информирует нас о следующей строке в стеке, куда переходит элемент управления после получения передачи от номера строки, описанного в последней строке. Ошибки / исключения представляют собой выходные данные в виде стека, которые были поданы в стек методом
fillInStackTrace()классаThrowable, который сам заполняет детали передачи управления программой в стек выполнения. Строки, начинающиеся сat, являются ничем иным, как значениями стека выполнения. Таким образом программист может понять, где в коде реальная проблема заключается в следующем.Наряду с методом
printStackTrace()неплохо использовать методe.getmessage().
printStackTrace()печатает места, где произошло исключение в исходном коде, что позволяет автору, написавшему программу, увидеть, что пошло не так. Но поскольку он показывает проблемы в исходном коде, пользователь (Ы), который может или не может иметь никакого опыта кодирования, может быть не в состоянии понять, что пошло не так, поэтому, если программа позволяет пользователю отправлять сообщения об ошибках авторам, пользователи могут не быть в состоянии дать хорошие данные о том, что пошло не так.Вы должны рассмотреть метод
Logger.getLogger(), он предлагает лучшее средство обработки исключений (ведения журнала), и кроме тогоprintStackTrace()без аргументов считается устаревшим и должен использоваться только для отладки, а не для отображения пользователем.
printStackTrace()помогает программисту понять, где возникла реальная проблема. МетодprintStackTrace()является членом классаThrowableв пакетеjava.lang.
printStackTraceявляется методом классаThrowable. Этот метод отображает сообщение об ошибке в консоли; где мы получаем исключение в исходном коде. Эти методы можно использовать с блоком catch, и они описывают:
- имя исключения.
- описание исключения.
- расположение исключения в исходном коде.
Три метода, описывающие исключение на консоли (в котором printStackTrace является одним из них) являются:
printStackTrace()toString()getMessage()Пример:
public class BabluGope { public static void main(String[] args) { try { System.out.println(10/0); } catch (ArithmeticException e) { e.printStackTrace(); // System.err.println(e.toString()); //System.err.println(e.getMessage()); } } }
Как используется метод e. printStackTrace () в Java?
Ну, цель использования этого метода
e.printStackTrace();состоит в том, чтобы увидеть, что именно неправильно.Например, мы хотим обработать исключение. Давайте рассмотрим следующий пример.
public class Main{ public static void main(String[] args) { int a = 12; int b = 2; try { int result = a / (b - 2); System.out.println(result); } catch (Exception e) { System.out.println("Error: " + e.getMessage()); e.printStackTrace(); } } }Я использовал метод
e.printStackTrace();, чтобы показать, что именно не так.На выходе мы видим следующий результат.
Error: / by zero java.lang.ArithmeticException: / by zero at Main.main(Main.java:10) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Comments