广州做和改版网站的公司,免费网站下载直播软件免费,asp提高网站安全性的措施,wordpress 显示指定文章问题
当系统出现异常时#xff0c;除了要在控制台、日志等后台进行输出之外#xff0c;还需要在前端提示用户。
为了提示给用户#xff0c;错误信息需要做一些约定#xff1a;
错误信息统一用json格式返回给前端以HTTP状态码判断是否出现异常#xff0c;非200即为异常 …问题
当系统出现异常时除了要在控制台、日志等后台进行输出之外还需要在前端提示用户。
为了提示给用户错误信息需要做一些约定
错误信息统一用json格式返回给前端以HTTP状态码判断是否出现异常非200即为异常
实现
使用SpringMVC提供的控制器增强类实现。
引入相关依赖包
spring-web、log4j2相关…
定义通用的异常信息
/*** 通用异常信息*/
public enum CommonError {UNKNOWN_ERROR(执行异常),PARAMS_ERROR(非法参数异常),OBJECT_NULL(对象为空),QUERY_NULL(查询结果为空),REQUEST_NULL(请求参数为空);private String errMessage;public String getErrMessage() {return errMessage;}private CommonError(String errMessage) {this.errMessage errMessage;}
}自定义异常类型
/*** 自定义异常类*/
public class OnlineStudyException extends RuntimeException {private String errMessage;public OnlineStudyException() {super();}public OnlineStudyException(String errMessage) {super(errMessage);this.errMessage errMessage;}public String getErrMessage() {return errMessage;}public static void cast(String errMessage) {throw new OnlineStudyException(errMessage);}public static void cast(CommonError commonError) {throw new OnlineStudyException(commonError.getErrMessage());}
}响应用户的统一类型
public class RestErrorResponse implements Serializable {private String errMessage;public RestErrorResponse(String errMessage) {this.errMessage errMessage;}public String getErrMessage() {return errMessage;}public void setErrMessage(String errMessage) {this.errMessage errMessage;}
}全局异常处理器
Slf4j
RestControllerAdvice //增强SpringMVC中的Controller 处理SpringMVC的异常信息
public class GlobalExceptionHandler {ExceptionHandler(OnlineStudyException.class) //表明方法的处理异常类型ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)public RestErrorResponse customException(OnlineStudyException exception) {log.error(【系统异常】{}, exception.getErrMessage());return new RestErrorResponse(exception.getErrMessage());}ExceptionHandler(Exception.class)ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) //用状态代码和应返回的原因标记方法或异常类。调用处理程序方法时状态代码将应用于HTTP响应。public RestErrorResponse exception(Exception e) {log.error(【系统异常】{}, e.getMessage());return new RestErrorResponse(CommonError.UNKNOWN_ERROR.getErrMessage());}
}测试 public CourseBaseInfoDto createCourseBase(Long companyId,AddCourseDto dto) {.....
//合法性校验if (StringUtils.isBlank(dto.getName())) {throw new XueChengPlusException(课程名称为空);}.....