spring-mvc - java return 与 throw 性能问题

查看:396
本文介绍了spring-mvc - java return 与 throw 性能问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

xxxService.java
简单的一个小例子:
public UserVo login(@Params(length = 11) String phone, String password) {

User queryUser = new User();
queryUser.setPhone(phone);
queryUser.setPassword(MD5.getMD5Code(password));
User tempUser = userDao.selectOne(queryUser);
if(tempUser==null){
    throw new DataException(MessageEnum.PASSWORD.getCode(),MessageEnum.PASSWORD.getName());
}
return new UserVo(tempUser.getCode(),tempUser.getPhone());

}
原因:
这里我之所以用throw 是不想改变返回 的对象, 也是想让 异常统一处理器去处理返回 结果 ,也不想在controller 去判断 service 的业务处理是否正确 .要不然 controller里 就会出现 if(xxxService.login())return xxx; else return xxx;
问题:
1.这里是一个登录 校验 当出现 业务 错误 是 是用return 还是 用throw 自定义的异常好呢?
2.return 与 throw 哪个性能 更好 , 相差是多少?
3.使用throw这个选择是否正确 , 因为在实际 项目中 还没有遇见过这种处理方式 .
请指教指教 .
非常感谢.

最终结果:
首先谢谢各位的指教 .
小弟暂时还是采取了throw的方式,并且不进行fillInStackTrace().
原因:还是因为不用在controller中进行判断.感觉能比较方便一些.

解决方案

  1. 个人认为这里抛自定义的业务异常是可以的。

  2. 关于returnthrow哪个性能更好,理论上来说,抛出异常肯定是有性能损失的,创建一个Exception对象的最耗时的是调用fillInStackTrace方法,但是这个方法是可以通过传递参数来不调用的。更详细的可以参考http://stackoverflow.com/ques...

这篇关于spring-mvc - java return 与 throw 性能问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆