DataAccessException 与 SQLException
DataAccessException vs SQLException
我有两个与 Spring 框架中的异常处理相关的问题。
为什么 Spring 框架的 DataAccessException
是运行时异常,而核心 Java 的 SQLException
是检查异常?
Spring的异常处理比Java的异常处理机制有什么优势?
使用 DataAccessException
而不是 SQLException
的原因是它更笼统地描述了问题。如果您的 Repository 或 DAO 接口有两种不同的实现,一种用于 Oracle,一种用于 Cassandra,您可以让这一个异常表示两种实现的失败。
至于为什么这是运行时异常而不是检查异常,它允许调用者不必显式处理它。根据我的经验,如果 SQLException
或 DataAccessException
被抛出,除了让它冒泡给有能力的人之外,我无能为力或不想做太多事情。必须在每一层声明 throwables 会给调用者带来更多负担。如果他们中有人想抓住并处理它,他们可以。
这是 JavaDocs(感谢@Tom!)
我有两个与 Spring 框架中的异常处理相关的问题。
为什么 Spring 框架的
DataAccessException
是运行时异常,而核心 Java 的SQLException
是检查异常?Spring的异常处理比Java的异常处理机制有什么优势?
使用 DataAccessException
而不是 SQLException
的原因是它更笼统地描述了问题。如果您的 Repository 或 DAO 接口有两种不同的实现,一种用于 Oracle,一种用于 Cassandra,您可以让这一个异常表示两种实现的失败。
至于为什么这是运行时异常而不是检查异常,它允许调用者不必显式处理它。根据我的经验,如果 SQLException
或 DataAccessException
被抛出,除了让它冒泡给有能力的人之外,我无能为力或不想做太多事情。必须在每一层声明 throwables 会给调用者带来更多负担。如果他们中有人想抓住并处理它,他们可以。
这是 JavaDocs(感谢@Tom!)