我在数据访问对象中有一个 Java 方法。这个非常简单的方法将两个整数值插入到数据库中。
public void saveHourMin(int hour, int min) throws SQLException{
psInsert.setInt(1, hour);
psInsert.setInt(2, min);
psInsert.executeUpdate();
}
这个方法,或者,一般来说,任何 DAO 方法,应该在抛出 SQLException 时抛出异常,还是应该捕获并记录异常,然后通过返回码通知用户?哪种方法适合使用 Spring 的应用程序?
最佳答案
你不能指望调用者持续检查返回码,你最好抛出异常。
如果你抛出 SQLException 那么那将是一团糟,你可能最终会得到更高的层次,或者在每个方法上添加“抛出异常”,或者只是吃异常。这两种选择都不好。
Spring 这样做的方式是提供一个异常转换器,该转换器接收原始 SQLException 并抛出包含原始 SQLException 作为原因的 RuntimeException 子类,并尝试提供尽可能多的有关错误的信息,包括使用供应商错误代码来决定抛出哪个特定子类。 如果您使用 Spring 的任何 jdbcTemplates,那么您将获得异常转换功能,因此您不需要在数据访问对象中包含任何异常捕获或抛出。
如果不想使用 Spring,可以在 DAO 中捕获 SQLException 并抛出 RuntimeException,包括原来的 SQLException 作为原因。对于大多数 SQLException,您无能为力,您只想快速失败并记录异常。
关于java - 数据访问对象 (DAO) 中的方法应该抛出还是捕获其异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15233276/