Метод printStackTrace
Метод printStackTrace класса Throwable выводит
информацию о стеке вызовов текущего исключения в стандартный
поток ошибок (обычно это консоль). Стек вызовов показывает
последовательность методов, которые привели к возникновению
исключения, что очень помогает при отладке программ.
Метод может принимать в качестве параметра поток вывода,
например PrintStream или PrintWriter,
но чаще всего вызывается без параметров.
Синтаксис
throwable.printStackTrace()
throwable.printStackTrace(PrintStream s)
throwable.printStackTrace(PrintWriter s)
Пример
Давайте создадим исключение и выведем его стек вызовов в стандартный поток ошибок:
public class Main
{
public static void main(String[] args)
{
try
{
int[] arr = new int[5];
arr[10] = 100;
}
catch (ArrayIndexOutOfBoundsException e)
{
e.printStackTrace();
}
}
}
Результат выполнения кода (может незначительно отличаться в зависимости от версии JVM):
java.lang.ArrayIndexOutOfBoundsException: Index 10 out of bounds for length 5
at Main.main(Main.java:8)
Пример
Давайте выведем стек вызовов в специальный поток, чтобы перенаправить его, например, в файл:
import java.io.PrintStream;
import java.io.ByteArrayOutputStream;
public class Main
{
public static void main(String[] args)
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos);
try
{
String str = null;
str.length();
}
catch (NullPointerException e)
{
e.printStackTrace(ps);
}
System.out.println(baos.toString());
}
}
Результат выполнения кода:
java.lang.NullPointerException: Cannot invoke "String.length()" because "str" is null
at Main.main(Main.java:15)
Смотрите также
-
метод
getMessage,
который возвращает сообщение об ошибке -
метод
getStackTrace,
который возвращает массив элементов стека -
метод
getCause,
который возвращает причину исключения -
класс
Throwable,
который является базовым для всех ошибок