java - 在 DAO 接口(interface)方法中声明或不声明 DataAccessException?

标签 java spring exception dao

我发现一些 Spring/Hibernate 代码对于在 DAO 接口(interface)方法中声明 DataAccessException 具有不同的策略。

有些确实明确声明了它,有些则没有(或只是有时):

public interface FlightDao {

    boolean decrementSeat(Long flightId, int quantity);

    List<Flight> findFlights(String fromAirportCode, String toAirportCode) throws DataAccessException;

    public List<Flight> getFlights();

    Flight getFlight(Long id);

    Flight getFlight(String flightNumber);

    void save(Flight flight);

}

什么被认为是最佳实践?为什么?

更新

摘自 spring tutorial 的第 13.2.2 节,使用@Repository注释实现DAO pojo以确保底层ORM(或JDBC)异常自动转换为DataAccessException(运行时)异常层次结构非常重要。

最佳答案

如您所见here ,这是一个 RuntimeException,因此无论您是否声明它在编程方面都没有区别。当用户实现该方法时,他可以选择在方法签名中忽略此异常。

我能想到将其放入方法签名中的唯一原因是对其进行标记,以便用户知道该方法可能会抛出此异常,从而他可以选择是否捕获并处理它。

关于java - 在 DAO 接口(interface)方法中声明或不声明 DataAccessException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11392498/

相关文章:

java - OSGi 包中访问标准 java 类时出现 NoClassDefFoundError

java - 具有重复属性的 Spring Boot 多个数据源

java - 如何理解和使用spring fusion与eclipse IDE?

java - getCurrentSession NullPointerException

php - 为什么无法从 __toString() 中抛出异常?

c++ - 使用 STL 字符串和 vector 类的异常问题

java - model.addAttribute() 参数

java - @DeclareRoles 在 Jersey-2 中应该如何使用?

java - 无法创建动态 Web 项目?

hadoop - 启动Hive CLI时出现奇怪的ServiceConfigurationError