【发布时间】:2017-12-27 13:57:28
【问题描述】:
我正在使用 JOOQ,并且想将某些 SQLExceptions 映射到业务异常。 exception handling 文档页面说:
以下关于执行侦听器的部分记录了覆盖 jOOQ 异常处理的方法,如果您希望单独处理某些类型的约束违规,或者如果您从数据库中引发业务错误等。
但是,the page about execute listeners 上没有实际的例子。
我知道我必须实现ExecuteListener 的方法exception(ExecuteContext),但我不清楚我是否应该从那里throw 另一个异常,或者改用ExecuteContext.exception 方法来覆盖现有的异常。例如。
@Override
public void exception(ExecuteContext ctx) {
if (ctx.sqlException().getSQLState().equals("23503")) {
throw new ForeignKeyViolationException("Foreign key violation", ctx.sqlException());
}
}
或者:
@Override
public void exception(ExecuteContext ctx) {
if (ctx.sqlException().getSQLState().equals("23503")) {
ctx.exception(ForeignKeyViolationException("Foreign key violation", ctx.sqlException()));
}
}
【问题讨论】: