diff --git a/jOOQ/src/main/java/org/jooq/ExecuteContext.java b/jOOQ/src/main/java/org/jooq/ExecuteContext.java index 495e4347d6..c096e84d95 100644 --- a/jOOQ/src/main/java/org/jooq/ExecuteContext.java +++ b/jOOQ/src/main/java/org/jooq/ExecuteContext.java @@ -291,6 +291,9 @@ public interface ExecuteContext extends Scope { * Override the {@link RuntimeException} being thrown. *
* This may have no effect, if called at the wrong moment. + *
+ * If null is being passed, jOOQ will internally translate the
+ * "unavailable" exception to an unspecified {@link DataAccessException}.
*/
void exception(RuntimeException e);
diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultExecuteContext.java b/jOOQ/src/main/java/org/jooq/impl/DefaultExecuteContext.java
index fcd8ea783f..7bde7789e6 100644
--- a/jOOQ/src/main/java/org/jooq/impl/DefaultExecuteContext.java
+++ b/jOOQ/src/main/java/org/jooq/impl/DefaultExecuteContext.java
@@ -665,21 +665,21 @@ class DefaultExecuteContext implements ExecuteContext {
@Override
public final void exception(RuntimeException e) {
- this.exception = e;
+ this.exception = Tools.translate(sql(), e);
if (Boolean.TRUE.equals(settings().isDebugInfoOnStackTrace())) {
// [#5570] Add jOOQ version and SQL Dialect info on the stack trace
// to help users write better bug reports.
// See http://stackoverflow.com/q/39712695/521799
- StackTraceElement[] oldStack = e.getStackTrace();
+ StackTraceElement[] oldStack = exception.getStackTrace();
if (oldStack != null) {
StackTraceElement[] newStack = new StackTraceElement[oldStack.length + 1];
System.arraycopy(oldStack, 0, newStack, 1, oldStack.length);
newStack[0] = new StackTraceElement(
"org.jooq_" + Constants.VERSION + "." + dialect(),
"debug", null, -1);
- e.setStackTrace(newStack);
+ exception.setStackTrace(newStack);
}
}
}
diff --git a/jOOQ/src/main/java/org/jooq/impl/Tools.java b/jOOQ/src/main/java/org/jooq/impl/Tools.java
index 3be5739c55..e6019251d2 100644
--- a/jOOQ/src/main/java/org/jooq/impl/Tools.java
+++ b/jOOQ/src/main/java/org/jooq/impl/Tools.java
@@ -2802,6 +2802,16 @@ final class Tools {
return new DataAccessException("SQL [" + sql + "]; Unspecified SQLException");
}
+ /**
+ * Translate a {@link RuntimeException} to a {@link DataAccessException}
+ */
+ static final RuntimeException translate(String sql, RuntimeException e) {
+ if (e != null)
+ return e;
+ else
+ return new DataAccessException("SQL [" + sql + "]; Unspecified RuntimeException");
+ }
+
/**
* Safely close a statement
*/