Ответ 1
Он печатает трассировку стека Exception
до System.err
.
Это очень простой, но очень полезный инструмент для диагностики исключения. Он рассказывает вам, что произошло, и где в коде это произошло.
Я просматриваю программу сокета. В нем printStackTrace
вызывается в объекте IOException
в блоке catch.
Что делает printStackTrace()
на самом деле?
catch(IOException ioe)
{
ioe.printStackTrace();
}
Я не знаю его цели. Для чего его используют?
Он печатает трассировку стека Exception
до System.err
.
Это очень простой, но очень полезный инструмент для диагностики исключения. Он рассказывает вам, что произошло, и где в коде это произошло.
Мне тоже было любопытно об этом, поэтому я просто собрал небольшой пример кода, где вы можете видеть, что он делает:
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 поможет вам определить, какой метод вызывает ошибку. Стек поможет примерно так:
Сначала ваш главный метод будет вызываться и вставлен в стек, тогда второй метод будет вызываться и вставлен в стек в порядке LIFO, и если какая-либо ошибка возникает где-то внутри любого метода, то этот стек поможет определить этот метод.
printStackTrace() помогает программисту понять, где возникла настоящая проблема. printStacktrace() - это метод класса Throwable пакета java.lang. Он печатает несколько строк в выходной консоли. Первая строка состоит из нескольких строк. Он содержит имя подкласса Throwable и информацию о пакете. Со второй строки он описывает номер ошибки/номер строки, начинающийся с " на".
В последней строке всегда указывается назначение, на которое влияет ошибка/исключение. Вторая последняя строка сообщает нам о следующей строке в стеке, где элемент управления идет после получения перевода из номера строки, указанного в последней строке. Ошибки/исключения представляют собой вывод в виде стека, который был загружен в стек методом fillInStackTrace() класса Throwable, который сам заполняет передачу управления программой детали в стек выполнения. Строки, начинающиеся с в, представляют собой ничего, кроме значений стека выполнения. Таким образом, программист может понять, где в коде актуальная проблема.
Наряду с методом printStackTrace() рекомендуется использовать e.getmessage().
printStackTrace(): печатает места, где произошло исключение в исходном коде, что позволяет автору, который написал программу, посмотреть, что пошло не так. Но поскольку он показывает проблемы в исходном коде, пользователь (пользователи), которые могут или не могут иметь какой-либо опыт кодирования, может быть не в состоянии понять, что пошло не так, поэтому, если программа позволяет пользователю отправлять сообщения об ошибках авторам, пользователи могут быть не в состоянии дать хорошие данные о том, что пошло не так.
Вы должны учитывать метод Logger.getLogger(), он предлагает лучший способ обработки исключений (logging), и, кроме того, printStackTrace() без аргументов считается устаревшим и должен ТОЛЬКО использоваться для целей отладки, а не для пользователя дисплей.
printStackTrace()
помогает программисту понять, где возникла настоящая проблема. Метод printStackTrace()
является членом класса Throwable
в пакете java.lang
.
Что такое метод 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)
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());
}
}
}