@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抛异常 代替返回_请问业务层方法是抛出一个异常好还是返回一个结果更好...相关推荐

  1. java堆栈日志打印错误_请问一下php能不能像java那样打印错误堆栈信息到错误日志?...

    同题,如果可以大概操作步骤是什么?或者有什么相关资料?谢谢. 回复内容: 同题,如果可以大概操作步骤是什么?或者有什么相关资料?谢谢. 之前的回答有问题,清除了. 就像楼下说的,PHP 确实不会输出错 ...

  2. Java黑皮书课后题第3章:*3.5(给出将来的日期)编写一个程序,提示用户输入代表今天日期的数字(周日0周一1周二2)同时用户输入一个今天之后的天数代表将来某天的数字,然后显示这天是周几

    *3.5(给出将来的日期)编写一个程序,提示用户输入代表今天日期的数字(周日0周一1周二2)同时用户输入一个今天之后的天数代表将来某天的数字,然后显示这天是周几 题目 题目描述 运行示例 破题 代码块 ...

  3. java分母为0解决_分母为0一定会抛异常吗?

    现象描述 最近做了一个需求,用到了 预算 / 时间窗口数,其中预算是double类型,时间窗口数是int类型,其中时间窗口数我计算的有问题,会出现为0的情况(实际最小值应该为1),然后就出现了 一个d ...

  4. java会编译失败吗?_请问为什么这个通用java代码不会编译?

    为什么这个通用java代码不会编译? 在这个简化的例子中,我有一个泛型类,以及一个返回Map而不管类型参数的方法.当我没有在包含类上指定类型时,为什么编译器会清除地图上的类型?import java. ...

  5. java scanner以回车结束_请问Scanner在输入回车后,如何才能退出?

    package com.imooc; import java.util.Scanner; /*@kernal * 功能描述: * 为指定成绩加分,直到分数大于等于 60 为止, * 输出加分前和加分后 ...

  6. java英文版怎么汉化_请问,java中,将下面的英文名字变为中文 该怎样输出?

    如题,下面是代码------------------------------importjava.io.*;publicclassRandomFileDemo{publicstaticvoidmain ...

  7. java通过异常传递消息_如何消除'Failed to load IMAP envelope'消息传递异常?

    我正在尝试通过以下方式获取电子邮件列表Message msg[] = folder.getMessages();之后,我得到每个邮件的细节,同时我得到javax.mail.MessagingExcep ...

  8. java登录信息怎么保存_请问java如何用cookies保存用户登录信息?

    一.本程序要实现的功能 第一次登录页面时,若在表单中选择了"记住密码",则下次登录网站时不用在填写表单,这里用"success.jsp"表示要打开的页面.若本地 ...

  9. 编写一个java程序_鼠标在java窗口上的坐标_请问如何在Java中获取窗口外部的鼠标单击坐标...

    尽管可能,但可能会受到限制: 为焦点事件添加一个AWTEventListener.只要您的应用在单击按钮之前就具有焦点,就会收到焦点丢失事件.然后查询指针位置. 限制是,当然,您的应用程序失去了焦点. ...

最新文章

  1. 【漫画】以后在有面试官问你AVL树,你就把这篇文章扔给他。
  2. 独家 | 一文带你盘点最新热门技术话题,技术圈潮人必读!
  3. SAP MM PR单据类型的配置里‘Control’和’Doc.Type’字段的作用?
  4. jQuery事件绑定on()、bind()与delegate() 方法详解
  5. 【两分钟带你了解树】数据结构04-树结构的概述
  6. 让nginx支持thinkphp rewrite模式
  7. githup用户名密码怎么看_MacBook Pro 开机密码忘记解决方法
  8. Chrome 为何会成功?
  9. DAC+DMA+TIM实现音频播放问题记录
  10. sed的选项与命令简要
  11. 【Python】从堆糖爬取图片Demo
  12. 清明五一假期催热周边自驾游 迪庆州应势推出“杜鹃花之旅”
  13. 试题 基础练习 数列排序
  14. 读文献——《Deep Residual Learning for Image Recognition》
  15. 超级经典的人生格言(搞笑)
  16. 初级网络工程师这30道面试题一定得会,建议小白收藏!
  17. Vue UI组件库(Element UI库)
  18. 项目管理中的三大误区
  19. centos7制作U盘启动盘
  20. 深度学习04 -模型管理

热门文章

  1. Window 7 下的某些服务不能随便禁用! 无法立即删除.exe文件,因为禁用了Application Experience服务。...
  2. uva-10602-贪心
  3. js运算符+运算方式
  4. 模板代码复用的三种方式: 宏, 继承, 包含
  5. Android中Service的启动方式及Activity与Service的通信方式
  6. linux【报错】userdel: user xiaoming is currently used by process 4713解决
  7. [PE格式分析] 3.IMAGE_NT_HEADER
  8. 理解request.getSession(boolean create)
  9. windows下git命令的使用
  10. 了解模型、视图和控制器