全局异常处理

1.创建一个全局异常处理类

2.添加注解RestControllerAdvice 这个是直接返回一个json格式的

3.在处理方法上添加ExceptionHandler表明是对那个异常进行处理的

4.在处理方法中编写业务逻辑

注意: 这里的R是一个返回给前台的数据的类;BizCodeEnum是一个业务编码的状态码,第一个处理异常的方法是对JRS303校验的异常处理

package com.yuchen.yuchenmail.mailproduct.exception;

import com.yuchen.common.exception.BizCodeEnum;

import com.yuchen.common.utils.R;

import lombok.extern.slf4j.Slf4j;

import org.springframework.validation.BindingResult;

import org.springframework.web.bind.MethodArgumentNotValidException;

import org.springframework.web.bind.annotation.ControllerAdvice;

import org.springframework.web.bind.annotation.ExceptionHandler;

import org.springframework.web.bind.annotation.RestController;

import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.util.HashMap;

import java.util.Map;

@Slf4j

@RestControllerAdvice(basePackages ="com.yuchen.yuchenmail.mailproduct.controller")

public class GlobalExceptionControllerAdvice {

@ExceptionHandler(value = MethodArgumentNotValidException.class)

public R handleVaildException(MethodArgumentNotValidException e){

log.info(e.toString());

BindingResult bindingResult = e.getBindingResult();

Map  errorMap =new HashMap<>();

bindingResult.getFieldErrors().forEach((fieldError) -> {

errorMap.put(fieldError.getField(), fieldError.getDefaultMessage());

});

return R.error(BizCodeEnum.VAILD_EXCEPTION.getCode(),BizCodeEnum.VAILD_EXCEPTION.getMsg()).put("data",errorMap);

}

@ExceptionHandler(value = Throwable.class)

public R defaultHandleException(Throwable t){

return R.error(BizCodeEnum.UNKNOW_EXCEPTION.getCode(),BizCodeEnum.UNKNOW_EXCEPTION.getMsg());

}

}

你可能感兴趣的:(全局异常处理)