处理具有以下3种潜在结果的从数据库返回记录的可接受方法:
我主要是按合同设计:
class Scratch {
public User getUser(int id) {
try {
// Prepare SQL Query
PreparedStatement s = this.connection.prepareStatement(
"select * from get_user(?)"
);
// Provide SQL Parameters
s.setInt(1, id);
// Run our SQL
ResultSet rs = s.executeQuery();
rs.next();
// Extract data into Entity
User user = User.createFromDatabase(rs);
rs.close();
return user;
} catch(Exception e) {
e.printStackTrace();
}
return new User();
}
}
在数据库连接或查询失败的情况下,我应该做的事情不太明显,我有几种选择:
我倾向于处理异常,因为它避免了十亿美元的错误,并且在正常情况下也按合同维护设计。
但是,我想知道是否存在任何明显的陷阱,或者这是一种熟悉的情况,并且具有建立良好的解决方案。
答案 0 :(得分:1)
我将引发异常,并让用户知道连接失败。返回NULL是我永远不会做的事情,因为您不知道问题出在哪里。
我不知道如果没有数据库连接为什么会返回“新用户对象”。您将无法保存用户。
我的选择是引发异常
答案 1 :(得分:0)
使用可选(请)。这明确表明在数据库中找不到该用户,并避免使用NullPointerException。