java抛异常 代替返回_请问业务层方法是抛出一个异常好还是返回一个结果更好...
@Override
public Response checkUserToken(long uid, String accessToken, String deviceToken){
Response response = new Response();
//TODO 先到session中找
try {
UserLogin userLogin = userLoginDao.getUserLoginByUid(uid);
if(userLogin != null) {
if(userLogin.getStatus() !=-1){
if(accessToken == userLogin.getAccessToken() && deviceToken == userLogin.getDeviceToken()){
//驗證正確, 生成新的accessToken
String newAccessToken = regenerateAccessToken(uid);
//保存到數據庫
String sql = "UPDATE " + UserLoginDao.DEFAULT_TABLE_NAME + " SET " +
"accessToken=?, online=?";
Object[] args = new Object[]{newAccessToken, 1};
int[] argTypes = new int[]{Types.VARCHAR, Types.TINYINT};
userLoginDao.executeUpdate(sql, args, argTypes);
response.setRc(Rc.RC_SUCCESS);
response.setData(new LoginDTO(uid, accessToken, deviceToken));
}else{
response.setRc(Rc.RC_USER_ACCESS_ERROR);
response.setErrMsg("驗證失敗,請重新登陸");
}
}else{
response.setRc(Rc.RC_USER_STATUS);
response.setErrMsg("賬號存在風險,已暫時鎖定");
}
}else{
response.setRc(Rc.RC_USER_INVALID);
response.setErrMsg("不合法用戶請求");
}
}catch (Exception e){
Yin.logError(e, getClass());
response.setRc(Rc.RC_DB_ERROR);
response.setErrMsg("數據庫異常");
}
return response;
}
這是一個業務層方法, 里面我直接try catch捕獲了dao層的可能的異常. 并作為一個對象返回.
我的考慮是:這么做的在action層就無需try, catch了,因為統一通過Response返回結果
我看有的人是封裝了一個業務層的異常, 返回給action
這兩種方法哪個好些?為什么?
另外, 如果是封裝業務層的異常,這個按照什么原則分的呢? 比如 前臺傳個id, 如果這個id沒找到,難道我要構造個UserNotFoundException, 而不是在Response對象里加一個status?
小弟學程序至今, 一直覺得自己寫的代碼很糟糕, 最近開始看代碼大全這本書, 覺得受益匪淺, 并重新修改了代碼.麻煩各位前輩解惑的同時, 能指點一下如上這段代碼. 請指教
總結
以上是生活随笔為你收集整理的java抛异常 代替返回_请问业务层方法是抛出一个异常好还是返回一个结果更好...的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: java addlistener_Jav
 - 下一篇: java无忧网_零基础java入门课程