转:http://hi.baidu.com/hougbin/blog/item/54a529d02e9b4d84a1ec9c43.html 上善若水
2.问题分析
由于在service层中,使用了try ,catch来捕捉异常,导致sevice层出现的异常被 “截留”,无法抛出给事务管理器,这就给事务管理器造成一种假象,就像程勋在运行中,没有产生任何问题,因此也就不会对出现 runtimeException进行回滚操作。
3. 正确做法
在service中不进行异常的 try 和catch操作, 只是在方法定义中 throws exception(spring的事务管理也就能看到异常了),这些异常将由 struts的action来进行捕捉,在客户端给出友好的提示。
4 注意的问题
spring的事务管理器只对 unchecked exception进行异常回滚,Error和RuntimeException及其子类是unchecked exception.其他exception是checked exception.
举例: runtimeException有 以下
public void saveSomething(String param) throws Exception() {
try{
doSomething.......;
}catch(Exception e) {
e.printStackTrace();
}
}
2.问题分析
由于在service层中,使用了try ,catch来捕捉异常,导致sevice层出现的异常被 “截留”,无法抛出给事务管理器,这就给事务管理器造成一种假象,就像程勋在运行中,没有产生任何问题,因此也就不会对出现 runtimeException进行回滚操作。
3. 正确做法
在service中不进行异常的 try 和catch操作, 只是在方法定义中 throws exception(spring的事务管理也就能看到异常了),这些异常将由 struts的action来进行捕捉,在客户端给出友好的提示。
4 注意的问题
spring的事务管理器只对 unchecked exception进行异常回滚,Error和RuntimeException及其子类是unchecked exception.其他exception是checked exception.
举例: runtimeException有 以下
AnnotationTypeMismatchException,
ArithmeticException,
ArrayStoreException,
BufferOverflowException,
BufferUnderflowException,
CannotRedoException,
CannotUndoException,
ClassCastException,
CMMException,
ConcurrentModificationException,
DOMException,
EmptyStackException,
EnumConstantNotPresentException,
EventException,
IllegalArgumentException,
IllegalMonitorStateException,
IllegalPathStateException,
IllegalStateException,
ImagingOpException,
IncompleteAnnotationException,
IndexOutOfBoundsException,
JMRuntimeException,
LSException,
MalformedParameterizedTypeException,
MissingResourceException,
NegativeArraySizeException,
NoSuchElementException,
NullPointerException,
ProfileDataException,
ProviderException,
RasterFormatException,
RejectedExecutionException,
SecurityException,
SystemException,
TypeNotPresentException,
UndeclaredThrowableException,
UnmodifiableSetException,
UnsupportedOperationException