Анализ элементов трассировки стека Java

Анализ элементов трассировки стека JavaТрассировка стека — это список вызовов методов для данной точкой программы. Вы наверняка неоднократно видели эту информацию, она отображается каждый раз, когда при выполнении Java-программы возникает неконтролируемые исключение.

В версиях, предшествующих Java SE 1.4, для получения текстового описания трассировки стека применялся метод printStackTrace() класса Throwable. Теперь разработчикам доступен метод getStackTrace() он возвращает массив объектов StackTraceElement, которые можно анализировать в программе. Например:

Класса StackTraceElement содержит методы, позволяющие  получить имя файла, номер строки кода, а также имя класса и метода. Форматированную строку, содержащую эту информацию, предоставляет метод toString().

В Java SE 5.0 был добавлен статический метод Thread.getAllStackTraces(), который позволяет получить трассировку стека для всех потоков. Следующий фрагмент кода демонстрирует его применение:

Более подробные сведения о потоках и интерфейсе Map приведены в следующих уроках нашего блога.

Ниже показан код программы, которая выводит трассировку стека для рекурсивной функции вычисления факториала. Например, при вычислении factorial(3) вы получите следующие данные:

Вот пример программы которая отображает результаты трассировки стека для рекурсивного метода:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *