Что такое использование метода printStackTrace () в Java?



Я прохожу через программу сокета. В нем printStackTrace вызывается на объект IOException в блоке catch.

Что же на самом деле делает printStackTrace()?



catch(IOException ioe)
{
ioe.printStackTrace();
}


Я не знаю своего предназначения. Для чего он используется?

1410   8  

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, и они описывают:

  1. имя исключения.
  2. описание исключения.
  3. расположение исключения в исходном коде.

Три метода, описывающие исключение на консоли (в котором printStackTrace является одним из них) являются:

  1. printStackTrace()
  2. toString()
  3. 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

    Ничего не найдено.