DataAccessException与SQLException

时间:2015-01-09 21:40:47

标签: java spring exception exception-handling

我有两个与Spring框架中的异常处理相关的问题。

1)为什么Spring框架的DataAccessException是运行时异常而Core Java的SQLException是一个已检查的异常?

2)Spring的异常处理优于Java的异常handlnig机制有什么优势?

1 个答案:

答案 0 :(得分:11)

使用DataAccessException超过SQLException的原因是它更一般地描述了问题。如果你有一个Repository或DAO接口,它有两个不同的实现,一个用于Oracle,一个用于Cassandra,你可以让这两个实现的这个异常表示失败。

至于为什么这是运行时而不是已检查的异常,它允许调用者不必显式处理它。根据我的经验,似乎如果SQLExceptionDataAccessException被扔到那里,除了让它冒泡到可能的人之外,我不能或想要做的事情不多。必须在每一层声明throwables对调用者来说是更多的负担。如果其中一个人想抓住并处理它,他们就可以。

以下是JavaDocs(感谢@Tom!)

  1. DataAccesssException
  2. SQLException