关于业务异常的处理方式
新手提问:“关于业务异常的处理方式”,在 V 站搜了一下都是很久以前的旧帖子,所以开个新帖提问
之前的公司是完全不用异常,比如用户名不正确的处理:
public void login(String username,String password){ User user = db.getUsername(username); if(user==null){ //UnifyResponse 是统一响应实体类,参数 1:code,参数 2:message return UnifyResponse.FAIL(400,"用户不存在"); } }
返回给前端的格式:
http status : 200 { code: 400, message: "用户名不正确" }
现在这家公司是这样的:
public void login(String username,String password){ User user = db.getUsername(username); if(user==null){ //UnifyResponse 是统一响应实体类,参数 1:code,参数 2:message throw new NotFoundException(400,"用户名不正确") } }
返回给前端的格式:
http status : 404 { code: 400, message: "用户名不正确" }
两个问题:
- 关于业务的处理,是这届 return,还是 throw 异常之后,全局进行捕获再 return ?
- 关于 http status,是无论是否成功都返回 200,还是遵循 restful 规范,404 不存在,403 无权限?
大家说说哪种处理更好?前端同学能否接受 restful 的 http status 规范