jdon框架异常处理的缺陷

最近学习了一下jdon,跑了跑她自带的例子,发现一些问题。
jdon的拦截器catch住了Exception和Throwable级别的异常,如下所示:


// BeforeAfterMethodTarget的invoke函数
} catch (Exception ex) {
Debug.logError(ex, module);
} catch (Throwable ex) {
throw new Throwable(ex);
}

这样当被拦截的方法抛出业务异常时,被该拦截器拦截了,业务层不能捕捉到异常,如下所示:

// TestServicePOJOImp的createUser函数
public void createUser(EventModel em) {
UserModel user = (UserModel) em.getModelIF();
try {
userRepository.insert(user);
logger.debug(" userId:" + user.getUserId());
logger.debug(" userName:" + user.getName());
} catch (Exception ex) {
logger.error(ex);
em.setErrors(Constants.USER_SAVE_ERROR);
}
}

当userRepository.insert(user)执行出错的时候(比如说ora-00001 违反唯一索引),该SQLException被BeforeAfterMethodTarget里面的invoke函数所check住,createUser里面根本捕获不到异常,em.setErrors(Constants.USER_SAVE_ERROR)也不会被执行到,返回到界面上后显示Operate Successfully! return index。
这样的问题应该怎么解决,jdon的异常处理是不是做的不够好?
jdon的拦截器如果把Exception和Throwable异常都check住的话,那业务层怎么处理下层通过异常返回的出错信息了?
[该贴被weiweishouwang于2011-04-27 15:42修改过]

2011年04月27日 15:29 "@weiweishouwang"的内容
jdon的拦截器如果把Exception和Throwable异常都check住的话,那业务层怎么处理下层通过异常返回的出错信息了 ...

JF处理异常思路和一般不一样,认为业务层不必向前面抛业务异常,业务异常也是业务,抛出业务异常就向前端泄漏业务。

不过JF如果发现业务方法内异常,会报出"一些错误发生在你的方法中"。以起到提示用户。