永不崩溃。
似乎是个好主意,不是吗?用户不喜欢崩溃的程序,所以让我们编写不会崩溃的程序,而用户应该喜欢该程序,对吗?我就是这样开始的。
如今,我更倾向于认为如果它不起作用,就不应假装它正在起作用。尽快失败,并显示一条错误消息。如果不这样做,您的程序将在以后的几条指令中崩溃甚至更加严重,但是由于存在一些无法描述的空指针错误,您将需要花费一个小时来调试。
我最喜欢的“不要崩溃”模式是这样的:
public User readUserFromDb(int id){
User u = null;
try {
ResultSet rs = connection.execute("SELECT * FROM user WHERE id = " + id);
if (rs.moveNext()){
u = new User();
u.setFirstName(rs.get("fname"));
u.setSurname(rs.get("sname"));
// etc
}
} catch (Exception e) {
log.info(e);
}
if (u == null){
u = new User();
u.setFirstName("error communicating with database");
u.setSurname("error communicating with database");
// etc
}
u.setId(id);
return u;
}
现在,您不必要求用户复制/粘贴错误消息并将其发送给您,而是必须深入研究日志以查找日志条目。(由于他们输入了无效的用户ID,因此不会有日志条目。)