我正在捕获DAO类中的泛型异常并将其包装为DaoException。这样做的主要原因是,EBean在保存失败的情况下抛出不同的运行时异常,我不想将它们传播到上层。上层应该只知道保存是否成功。在DAO层捕获泛型异常是一种不好的做法吗?
以下是代码片段。
public void save(Object object) throws DaoException {
try {
Ebean.save(object);
} catch (Exception e) {
throw new DaoException("Error saving record", e);
}
}
这违背了一般的概念,即泛型异常不应该被捕获。
但是,在这种情况下这是可以接受的,或者仍然是一个不好的做法?
还有几件事要添加到我的问题。 我确切的要求是
有设置,我需要在交易与坚持独立的对象。 (需要这样做的交易,以避免在同一时间其他情况下进行更改到同一对象)
如果一个对象未能persits由于一些错误,还是其他物体需要坚持。 (Cz他们是独立的)
我在做的服务层是循环的对象集。如果我从一个对象中收到一个DaoException,我将它添加到错误响应中并继续循环。但它不应该打破交易。 有没有更好的方法来满足这个要求?
为什么save函数会抛出不同的类型? –
可能重复的https://stackoverflow.com/questions/21938/is-it-really-that-bad-to-catch-a-general-exception?rq=1 – scottb