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

Я прохожу через программу сокетов. В нем,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 поможет вам определить, какой метод вызывает ошибку. Стек поможет так:

сначала ваш основной метод будет вызываться и вставляться в стек, затем второй метод будет вызываться и вставляться в стек в порядке LIFO, и если какая-либо ошибка возникает где-то внутри любого метода, то этот стек поможет определить, что метод.


printStackTrace() помогает программисту понять, где возникла фактическая проблема. printStacktrace() является методом класса Throwable of . Он печатает несколько строк в консоли вывода. Первая строка состоит из нескольких строк. Он содержит имя подкласса Throwable и информацию о пакете. Начиная со второй строки, он описывает положение ошибки / номер строки, начинающийся с at.

последняя строка всегда описывает назначения ошибка/исключение. Вторая последняя строка сообщает нам о следующей строке в стеке, куда переходит элемент управления после получения передачи из номера строки, описанного в последней строке. Ошибки / исключения представляют собой выходные данные в виде стека, которые были поданы в стек по fillInStackTrace() метод Throwable класс, который сам заполняет детали передачи управления программой в стек выполнения. Строки, начинающиеся с at, не что иное, как значения стека выполнения. Таким образом программист может понять, где в коде находится реальная проблема.

вместе с printStackTrace() метод, это хорошая идея, чтобы использовать e.getmessage().


printStackTrace() печать места, где произошло исключение в исходном коде, что позволяет автору, который написал программу, чтобы увидеть, что пошло не так. Но поскольку он показывает проблемы в исходном коде, пользователь (Ы), который может или не может иметь никакого опыта кодирования, может не понять, что пошло не так, поэтому, если программа позволяет пользователю отправлять сообщения об ошибках авторам, пользователи могут не иметь возможности дать хорошие данные о том, что пошло не так.

вы должны рассмотреть Logger.getLogger() метод, он предлагает лучшее средство обработки исключений (регистрации), и кроме того printStackTrace() без аргументов считается устаревшим и должен использоваться только для целей отладки, а не для отображения пользователя.


на printStackTrace() помогает программисту понять, где возникла фактическая проблема. The printStackTrace() метод является членом класса Throwable на .


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)