那时我的方法应该停止抛出异常?

时间:2017-09-25 08:57:13

标签: java sql database repository

我使用DAO来访问我的数据库,那些dao方法抛出SQL Exception,所以我这样做是为了让dao方法抛出这个异常。

然后我通过服务访问DAO,看起来像:

public class UserService implements Service {

    public int addNewUser(String username, String password) throws SQLException {
        User user = new User(username, password);
        UserDao dao = new UserDao(source.getConnection());
        return dao.add(user);
    }
}

这些方法也会抛出异常,但这种方式我必须在许多地方处理SQL Exception,有时它看起来很糟糕。我应该处理异常吗? 服务还是dao?或者可以在任何地方检查异常吗?

1 个答案:

答案 0 :(得分:2)

这可能会非常主观。你应该在哪里处理你的例外?这取决于你,没有规则。我的建议:继续向上抛出异常,直到你到达想要记录它的地方。如果要向最终用户显示“数据库访问出错”消息,最简单的方法是在所有底层方法头中都“抛出SQLException”,并且只有最高级的try-catch水平。

顺便说一句,你声明你“在许多地方”处理“SQL”异常,但向上抛出异常通常不称为处理。只有使用try-catch的部分“处理”异常,遵循我的建议,这将是你拥有的最高层。

编辑:作为this answer状态,您可能想尝试在DAO中捕获它,并向上抛出一个不同的(更通用的)异常,因为较高的层不一定能用于所有这些数据库特定的细节。这将是一种更为方便的方式,虽然它可能有点过分,取决于你的情况。

相关问题