Метод getStackTrace
Метод getStackTrace класса Throwable возвращает
массив элементов типа StackTraceElement, которые описывают
стек вызовов в момент создания исключения. Каждый элемент массива
содержит информацию о классе, методе, файле и номере строки,
где был выполнен вызов. Первый элемент массива соответствует
самому верхнему фрейму стека (месту, где исключение было создано),
а последний - самому нижнему (точке входа в программу).
Метод не принимает параметров и возвращает массив
StackTraceElement[].
Синтаксис
throwable.getStackTrace()
Пример
Давайте создадим исключение и выведем длину полученного стека вызовов:
public class Main
{
public static void main(String[] args)
{
Throwable t = new Throwable();
StackTraceElement[] stack = t.getStackTrace();
System.out.println(stack.length);
}
}
Результат выполнения кода:
1
Пример
Давайте выведем имя класса и метода для первого элемента стека вызовов:
public class Main
{
public static void main(String[] args)
{
Throwable t = new Throwable();
StackTraceElement[] stack = t.getStackTrace();
StackTraceElement first = stack[0];
System.out.println(first.getClassName());
System.out.println(first.getMethodName());
}
}
Результат выполнения кода:
"Main"
"main"
Пример
Давайте создадим исключение внутри вложенного метода и посмотрим, как выглядит стек вызовов:
public class Main
{
public static void main(String[] args)
{
methodA();
}
public static void methodA()
{
methodB();
}
public static void methodB()
{
Throwable t = new Throwable();
StackTraceElement[] stack = t.getStackTrace();
for (StackTraceElement el : stack)
{
System.out.println(el.getMethodName());
}
}
}
Результат выполнения кода:
"methodB"
"methodA"
"main"
Пример
Давайте перехватим исключение и выведем номер строки, в которой оно было создано:
public class Main
{
public static void main(String[] args)
{
try
{
throw new RuntimeException("error");
}
catch (RuntimeException e)
{
StackTraceElement[] stack = e.getStackTrace();
StackTraceElement first = stack[0];
System.out.println(first.getLineNumber());
}
}
}
Результат выполнения кода:
7
Смотрите также
-
метод
printStackTrace,
который выводит стек вызовов в поток ошибок -
метод
getMessage,
который возвращает сообщение исключения -
метод
getCause,
который возвращает причину исключения -
класс
Throwable,
который является базовым классом для всех ошибок и исключений