在处理SQL异常的时候,通常不建议直接在持久层catch异常,这么做意义不大。而SQL异常包括hibernate的异常是一种checked异常,也就是说,如果不处理的话就通不过编译。那么一般的做法是,将这种checked异常进行包装让他成为运行时异常,即:RuntimeException。这样,在持久层就不必catch这个异常,可以直接向外抛出,谁有能力处理就交给谁处理,谁也处理不了,就会一直向上抛出。
在JBPM里面,处理异常也是按照上面的方法,在JBPM的源代码里已经封装了一个异常处理类 JbpmException。他的代码如下:
package org.jbpm.api;
/** all exceptions that jBPM throws are JbpmException's
* (extends RuntimeException).*/
public class JbpmException extends RuntimeException {
private static final long serialVersionUID = 1L;
public JbpmException() {
super();
}
public JbpmException(String msg, Throwable cause) {
super(msg);
super.initCause(cause);
}
public JbpmException(String msg) {
super(msg);
}
public JbpmException(Throwable cause) {
super();
super.initCause(cause);
}
}