Skip to main content
 首页 » 编程设计

spring中在 spring 中分别识别数据库错误和查询错误

2024年11月01日58lhb25

我正在使用 spring 3 编写一个 RESTful Web 服务,我注意到当我实现我的 DAO 时(我使用 spring-jdbc 进行数据库访问),抛出的异常非常通用,所以我无法识别如果由于我的数据库已关闭或查询失败而发生异常。

示例代码:

try { 
    Q q = jdbcTemplate.queryForObject(MY_QUERY, new Object[]{id}, new MyMapper()); 
    return q; 
} catch (DataAccessException e) { 
    // What is this exception ? database down ? query failed ? 
} 

除非我知道运行时发生了什么异常,否则我无法向服务客户端发送回合理的错误消息。

感谢任何帮助。谢谢

请您参考如下方法:

您不应该试图捕获每一个可能的异常;代码,这样您就不会遇到多个用户或程序员错误类型异常的可能性。通常,无论您做什么,每个 DAO 中都会发生三种类型的异常。 (1) 你的数据库坏了...我认为如果这是问题你就会遇到更大的问题。 (2) 用户身份验证错误,很容易捕获和处理(但是您可能应该在 RESTful 前端上处理这种情况。(3) 不正确的数据。如果您有错误的数据,只需发回尝试的数据并异常的原因。

try { 
    Q q = jdbcTemplate.queryForObject(MY_QUERY, new Object[]{id}, new MyMapper()); 
    return q; 
} catch (DataAccessException e) { 
    throw new DaoException("Could not retrieve q with ID: " + qID, e); 
}