Как в Java конвертировать stack trace в строку

Чтобы превратить stack trace в строку и затем, например, вывести эту строку в лог (как правило что-то подобное происходит в блоке catch в каком-то фрагменте веб-приложения), необходимо воспользоваться промежуточным звеном.

В качестве такого звена подойдут объекты классов StringWriter и PrintWriter.

Метод printStackTrace класса Throwable перегружен таким образом, чтобы принимать в качестве аргумента объект класса PrintWriter, который в свою очередь принимает объект StringWriter в конструктор. Метод printStackTrace запишет туда трейс исключительной ситуации. Затем уже из объекта StringWriter легко извлекается строка с трейсом:


StringWriter sw = new StringWriter();

e.printStackTrace(new PrintWriter(sw));

String stackTraceAsString = sw.toString();


System.out.println(stackTraceAsString);