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中进行判断.感觉能比较方便一些.
个人认为这里抛自定义的业务异常是可以的。
关于
return
和throw
哪个性能更好,理论上来说,抛出异常肯定是有性能损失的,创建一个Exception
对象的最耗时的是调用fillInStackTrace
方法,但是这个方法是可以通过传递参数来不调用的。更详细的可以参考http://stackoverflow.com/ques...。