gpt4 book ai didi

java - 数据访问对象 (DAO) 中的方法应该抛出还是捕获其异常?

转载 作者:IT老高 更新时间:2023-10-28 13:50:22 24 4
gpt4 key购买 nike

我在数据访问对象中有一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com