我有两个与Spring框架中的异常处理相关的问题。
1)为什么Spring框架的DataAccessException
是运行时异常而Core Java的SQLException
是一个已检查的异常?
2)Spring的异常处理优于Java的异常handlnig机制有什么优势?
答案 0 :(得分:11)
使用DataAccessException
超过SQLException
的原因是它更一般地描述了问题。如果你有一个Repository或DAO接口,它有两个不同的实现,一个用于Oracle,一个用于Cassandra,你可以让这两个实现的这个异常表示失败。
至于为什么这是运行时而不是已检查的异常,它允许调用者不必显式处理它。根据我的经验,似乎如果SQLException
或DataAccessException
被扔到那里,除了让它冒泡到可能的人之外,我不能或想要做的事情不多。必须在每一层声明throwables对调用者来说是更多的负担。如果其中一个人想抓住并处理它,他们就可以。
以下是JavaDocs(感谢@Tom!)