当所有调用者必须处理这个异常,可以让调用者进行重试操作;或者该异常相当于该方法的第二个返回值。使用checked异常。
这个异常仅是少数比较高级的调用者才能处理,一般的调用者不能正确的处理。使用unchecked异常。有能力处理的调用者可以进行高级处理,一般调用者干脆就不处理。
这个异常是一个非常严重的错误,如数据库连接错误,文件无法打开等。或者这些异常是与外部环境相关的。不是重试可以解决的。使用unchecked异常。因为这种异常一旦出现,调用者根本无法处理。
如果不能确定时,使用unchecked异常。并详细描述可能会抛出的异常,以让调用者决定是否进行处理。
public String getPassword(String userId)throws NoSuchUserException{ UserInfo user = userDao.queryUserById(userId); If(user == null){ Logger.info(“找不到该用户信息,userId=”+userId); throw new NoSuchUserException(“找不到该用户信息,userId=”+userId); } else{ return user.getPassword(); } } public void sendUserPassword(String userId)throws Exception { UserInfo user = null; try{ user = getPassword(userId); //…….. sendMail(); // }catch(NoSuchUserException ex)( logger.error(“找不到该用户信息:”+userId+ex); throw new Exception(ex); } }