我正在使用 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);
}