Рубрики
Без рубрики

Преобразование трассировки стека в строку на Java

Узнайте, как преобразовать след стека в строку с помощью основного метода Java или библиотеки Apache Commons-Lang.

Автор оригинала: baeldung.

1. Введение

При работе с исключениями в Java мы часто регистрируем или просто отображаем следы стеков. Однако иногда мы не хотим просто распечатать след стека, нам может понадобиться записать след стека в файл, в базу данных или даже передать его по сети.

Для этих целей, имея стек след в качестве Струнные было бы очень полезно. И, к сожалению, Java не предоставляет очень удобный способ сделать это напрямую.

2. Преобразование с core Java

Начнем с основной библиотеки.

Функция РаспечататьСтакТрайс () из Исключение класс может занять один параметр, либо РаспечататьСтрим или РаспечататьПисач . Таким образом, можно, используя СтрингРайтер , чтобы распечатать след стека в Струнные :

StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);

Затем, позвонив sw.toString () вернет след стека в качестве Струнные .

3. Преобразование с Commons-Lang

В то время как предыдущий метод является самым простым способом преобразования трассировки стека в Струнные используя ядро Java, он остается немного громоздким. К счастью, Апач Викисклад-Ланг предоставляет функцию, делая работу.

Apache Commons-Lang – это очень полезная библиотека, предлагающая множество функций, которые отсутствуют в основных классах Java API, включая классы, которые могут быть использованы для работы с исключениями.

Во-первых, давайте начнем с конфигурации проекта. При использовании Maven, мы просто должны добавить следующую зависимость к пом.xml :


    org.apache.commons
    commons-lang3
    3.11

Тогда, в нашем случае, самый интересный класс ИсключениеУтилс , который предоставляет функции для управления исключениями. Используя этот класс, получить след стека в качестве Струнные от Исключение довольно проста:

String stacktrace = ExceptionUtils.getStackTrace(e);

4. Заключение

Получение стека след исключения в качестве Струнные не трудно, но это далеко не интуитивно. В этой статье представлены два способа сделать это, либо с помощью ядра Java или с помощью Apache Commons-Lang.

Имейте в виду, что Java 9 принесет новый API StackWalking, который должен сделать вещи проще.

Как всегда, образцы кода можно найти здесь, на GitHub .