异常处理是对Exception的统一管理,当程序出现问题会将出错信息打印出来,但是很多时候我们得到的是很多的堆栈信息和部分可以直接进行判断的信息,通过自定义的封装可以对异常信息进行统一管理,返回我们可以判断的异常信息。
后端为什么要进行统一异常处理,封装成result对象返回给前端,为啥不让前端在.error里处理错误?
1.统一规范,方便前后端进行错误统一处理。
统一处理后不需要每一个接口、每一次请求都去定义、判断错误,例如axios的拦截器可以统一拦截错误代码和错误提示,不用每一次都去判断response里面是否反回了错误信息。
2.是为了区分哪些异常是业务上的哪些是技术上的。一般来说,在error里处理的异常可以看作技术上的,比如服务器出问题,404文件找不到等等,这些错误一般是由于网络、接口出错本身技术原因导致的。而result对象里返回的异常,代表着业务逻辑上的异常,比如前端参数传错了,比如用户没有注册,用户密码错误等等,这些异常是可控的,是由于业务逻辑上的判断导致的。这样一区分,发生错误的时候就更容易定位问题。
3.更好的区分是因为网络异常,还是后端异常。
后端封装异常的好处是,如果后端异常HTTP RESP CODE是200,代表请求正确打到后端并取得了响应,如果不封装,那么如果出了异常,无法通过HTTP返回码正确区分