新手提问:“关于业务异常的处理方式”,在 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 规范