spring boot 默认情况下会映射到 /error 进行异常处理,提示不友好,需要自定义异常处理,提供友好展示
1.自定义异常类(spring 对于 RuntimeException 异常才会进行事务回滚):
1 package com.zpark.tools.exception; 3 /** 4 * @author cosmo 5 * @Title: CommonException 6 * @ProjectName 7 * @Description: 8 * @date 9 */ 10 public class CommonException extends RuntimeException{ 11 12 private String rerutnCode; 13 14 private String errorMsg; 15 16 public CommonException(String returnCode ,String errorMsg){ 17 this.returnCode = returnCode; 18 this.errorMsg = errorMsg; 19 } 20 21 public String getReturnCode() { 22 return returnCode; 23 } 24 25 public void setReturnCode(String returnCode) { 26 this.returnCode = returnCode; 27 } 28 29 public String getErrorMsg() { 30 return errorMsg; 31 } 32 33 public void setErrorMsg(String errorMsg) { 34 this.errorMsg = errorMsg; 35 } 36 }
2.定义全局异常类:
1 package com.zpark.tools.exception; 2 3 import com.zpark.tools.Constants; 4 import org.slf4j.Logger; 5 import org.slf4j.LoggerFactory; 6 import org.springframework.web.bind.annotation.ControllerAdvice; 7 import org.springframework.web.bind.annotation.ExceptionHandler; 8 import org.springframework.web.bind.annotation.ResponseBody; 10 import javax.servlet.http.HttpServletRequest; 11 import java.util.HashMap; 12 import java.util.Map; 13 14 /** 15 * @author cosmo 16 * @Title: CommonExceptionHandler 17 * @ProjectName 18 * @Description: 19 * @date 20 */ 21 @ControllerAdvice 22 public class CommonExceptionAdvice { 23 24 private Logger log = LoggerFactory.getLogger(CommonExceptionAdvice.class); 25 /** 26 * 全局异常捕捉处理 27 * @param ex 28 * @return 29 */ 30 @ResponseBody 31 @ExceptionHandler(value = Exception.class) 32 public Map errorHandler(HttpServletRequest request,Exception ex) {34 Map map = new HashMap(); 35 map.put("retrnCode", 100); 36 map.put("errorMsg", ex.getMessage());51 return map; 52 }67 }
运行中出现异常,会返回报错信息和错误code