处理Oracle DB存储的Java类中的异常

时间:2014-06-26 15:37:23

标签: java exception-handling oracle11g java-stored-procedures

当存储的Java类遇到未处理的异常时,将完整堆栈跟踪返回到PL / SQL以进行正确记录的最佳方法是什么?

在我的课程的初步测试中,我点击了NullPointer,Oracle将其显示为未处理的Java异常。我唯一的信息是它是一个NullPointer - 我没有暗示它在代码中的位置。

显然,我应该能够通过严格验证客户提供的数据和单元测试来避免大多数异常,但是如果发生了什么事情?

我正在考虑捕获异常,将堆栈跟踪存储在一个数组中并将该数组返回给PLSQL ......但我宁愿避免管理所有这些额外的返回值。

肯定已经有了一些东西,不幸的是我的Google-fu让我失望......

1 个答案:

答案 0 :(得分:1)

您可以获取完整的堆栈跟踪并将其转换为String并将其传递给PL/SQL以进行日志记录。我得到了一个简单的解决方案,用于将Stacktrace转换为String来自另一个SO问题here

StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
t.printStackTrace(pw);
String stackTrace = sw.toString(); // Send it to PL/SQL