2023年11月29日发(作者:)

基础框架之统⼀异常处理

在后端发⽣异常或者是请求出错时,前端通常显⽰如下

Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback.

Fri Jun 07 15:38:07 CST 2019

There was an unexpected error (type=Not Found, status=404).

No message available

对于⽤户来说⾮常不友好。

本⽂主要讲解如何在基础框架中实现统⼀异常处理功能。

实现⽅式

1.编写统⼀返回类CommonResponse

通过统⼀返回结果,使得前端在接受到返回参数时,可以进⾏统⼀处理

public class CommonResponse {

/**

* 成功码

*/

public enum CommonErrorCode {

SUCCESS("0",

"成功~"),

/**

* 404 Web 服务器找不到您所请求的⽂件或脚本。请检查URL 以确保路径正确。

*/

NOT_FOUND("404",

("哎呀,⽆法找到这个资源啦(%s)", _sonPhrase())),

/**

* 405 对于请求所标识的资源,不允许使⽤请求⾏中所指定的⽅法。请确保为所请求的资源设置了正确的 MIME 类型。

*/

METHOD_NOT_ALLOWED("405",

("请换个姿势操作试试(%s)", _NOT_sonPhrase())),

/**

* 415 Unsupported Media Type

*/

UNSUPPORTED_MEDIA_TYPE("415",

("呀,不⽀持该媒体类型(%s)", ORTED_MEDIA_sonPhrase())),

/**

* 系统异常 500 服务器的内部错误

*/

EXCEPTION("500", "服务器开⼩差,请稍后再试"),

DATA_INTEGRITY_VIOLATION_EXCEPTION("50001", "该操作违反了完整性"),

MYBATIS_SYSTEM_EXCEPTION("50002", "数据库未连接,请稍后再试"),

NULL_POINTER_EXCEPTION("50003","操作空数据变量"),

/**

* 系统限流

*/

TRAFFIC_LIMITING("429", "哎呀,⽹络拥挤请稍后再试试"),

/**

* 服务调⽤异常

*/

API_GATEWAY_ERROR("9999", "⽹络繁忙,请稍后再试"),

/**

* 参数错误

CommonErrorCode(String code, String message) {

= code;

e = message;

@RestControllerAdvice

@Slf4j

public class GlobalExceptionHandler {

/**

* NoHandlerFoundException 404 异常处理