Обработка исключений в хранимых классах Java в БД Oracle

Когда хранимый Java-класс попадает в необработанное исключение, каков наилучший способ вернуть полную трассировку стека обратно в PL/SQL для правильной регистрации?

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

Очевидно, что я должен быть в состоянии избежать большинства исключений с помощью строгой проверки предоставленных клиентом данных и модульных тестов, но в случае, если что-то случится?

Я думал о перехвате исключений, сохранении их трассировки стека в массиве и возврате этого массива в PLSQL... но я бы предпочел избежать необходимости управлять всеми этими дополнительными возвращаемыми значениями.

Скорее всего, что-то уже есть, к сожалению, мой Google-фу подвел меня...

1 ответ

Решение

Вы можете получить полную трассировку стека и преобразовать их в String и передать его PL/SQL для регистрации. Я получил простое решение для преобразования Stacktrace в String от другого ТАК вопроса здесь

StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
t.printStackTrace(pw);
String stackTrace = sw.toString(); // Send it to PL/SQL
Другие вопросы по тегам