版权声明:本文为博主原创文章,转载请说明出处。 https://blog.csdn.net/qq_42361748/article/details/89014527
在Spring中全局捕获异常需要配置切面去捕获,SpringBoot中捕获全局异常已经封装好了,我们可以直接调用
@ExceptionHandler 表示拦截异常
@ControllerAdvice 是 controller 的一个辅助类,最常用的就是作为全局异常处理的切面类
@ControllerAdvice 可以指定扫描范围
@ControllerAdvice 约定了几种可行的返回值,如果是直接返回 model 类的话,使用 @ResponseBody 进行 json转换,如果返回的是json类型的异常,去掉@ResponseBody。
创建包com.shang.Exception,新建一个异常类
package com.shang.exception;
import java.util.HashMap;
import java.util.Map;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* 说明:捕获全局异常类
*
* @author shang
* @time 2019年4月4日
*/
@ControllerAdvice
public class GlobalException {
@ExceptionHandler(RuntimeException.class)
@ResponseBody
public Map<String, Object> errorHandler(Exception ex) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("code", 500);
map.put("msg", "系统出差,请售后重试!");
return map;
}
}
写一个测试请求
运行