Обработка исключений в хранимых классах 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