РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
700 of 1163 menu

Метод 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,
    который является базовым классом для всех ошибок и исключений
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить