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堆栈日志打印错误_请问一下php能不能像java那样打印错误堆栈信息到错误日志?...
同题,如果可以大概操作步骤是什么?或者有什么相关资料?谢谢. 回复内容: 同题,如果可以大概操作步骤是什么?或者有什么相关资料?谢谢. 之前的回答有问题,清除了. 就像楼下说的,PHP 确实不会输出错 ...
- Java黑皮书课后题第3章:*3.5(给出将来的日期)编写一个程序,提示用户输入代表今天日期的数字(周日0周一1周二2)同时用户输入一个今天之后的天数代表将来某天的数字,然后显示这天是周几
*3.5(给出将来的日期)编写一个程序,提示用户输入代表今天日期的数字(周日0周一1周二2)同时用户输入一个今天之后的天数代表将来某天的数字,然后显示这天是周几 题目 题目描述 运行示例 破题 代码块 ...
- java分母为0解决_分母为0一定会抛异常吗?
现象描述 最近做了一个需求,用到了 预算 / 时间窗口数,其中预算是double类型,时间窗口数是int类型,其中时间窗口数我计算的有问题,会出现为0的情况(实际最小值应该为1),然后就出现了 一个d ...
- java会编译失败吗?_请问为什么这个通用java代码不会编译?
为什么这个通用java代码不会编译? 在这个简化的例子中,我有一个泛型类,以及一个返回Map而不管类型参数的方法.当我没有在包含类上指定类型时,为什么编译器会清除地图上的类型?import java. ...
- java scanner以回车结束_请问Scanner在输入回车后,如何才能退出?
package com.imooc; import java.util.Scanner; /*@kernal * 功能描述: * 为指定成绩加分,直到分数大于等于 60 为止, * 输出加分前和加分后 ...
- java英文版怎么汉化_请问,java中,将下面的英文名字变为中文 该怎样输出?
如题,下面是代码------------------------------importjava.io.*;publicclassRandomFileDemo{publicstaticvoidmain ...
- java通过异常传递消息_如何消除'Failed to load IMAP envelope'消息传递异常?
我正在尝试通过以下方式获取电子邮件列表Message msg[] = folder.getMessages();之后,我得到每个邮件的细节,同时我得到javax.mail.MessagingExcep ...
- java登录信息怎么保存_请问java如何用cookies保存用户登录信息?
一.本程序要实现的功能 第一次登录页面时,若在表单中选择了"记住密码",则下次登录网站时不用在填写表单,这里用"success.jsp"表示要打开的页面.若本地 ...
- 编写一个java程序_鼠标在java窗口上的坐标_请问如何在Java中获取窗口外部的鼠标单击坐标...
尽管可能,但可能会受到限制: 为焦点事件添加一个AWTEventListener.只要您的应用在单击按钮之前就具有焦点,就会收到焦点丢失事件.然后查询指针位置. 限制是,当然,您的应用程序失去了焦点. ...
最新文章
- 【漫画】以后在有面试官问你AVL树,你就把这篇文章扔给他。
- 独家 | 一文带你盘点最新热门技术话题,技术圈潮人必读!
- SAP MM PR单据类型的配置里‘Control’和’Doc.Type’字段的作用?
- jQuery事件绑定on()、bind()与delegate() 方法详解
- 【两分钟带你了解树】数据结构04-树结构的概述
- 让nginx支持thinkphp rewrite模式
- githup用户名密码怎么看_MacBook Pro 开机密码忘记解决方法
- Chrome 为何会成功?
- DAC+DMA+TIM实现音频播放问题记录
- sed的选项与命令简要
- 【Python】从堆糖爬取图片Demo
- 清明五一假期催热周边自驾游 迪庆州应势推出“杜鹃花之旅”
- 试题 基础练习 数列排序
- 读文献——《Deep Residual Learning for Image Recognition》
- 超级经典的人生格言(搞笑)
- 初级网络工程师这30道面试题一定得会,建议小白收藏!
- Vue UI组件库(Element UI库)
- 项目管理中的三大误区
- centos7制作U盘启动盘
- 深度学习04 -模型管理
热门文章
- Window 7 下的某些服务不能随便禁用! 无法立即删除.exe文件,因为禁用了Application Experience服务。...
- uva-10602-贪心
- js运算符+运算方式
- 模板代码复用的三种方式: 宏, 继承, 包含
- Android中Service的启动方式及Activity与Service的通信方式
- linux【报错】userdel: user xiaoming is currently used by process 4713解决
- [PE格式分析] 3.IMAGE_NT_HEADER
- 理解request.getSession(boolean create)
- windows下git命令的使用
- 了解模型、视图和控制器