浏览器访问出现错误是返回视图层
其他客户端出现错误时候返回定制的json数据
先写一个ExceptionHandler
@ControllerAdvice
public class MyExceptionHandler {
//出现运行时异常就会进入这个方法,将信息放到域中,然后转发到/error
@ExceptionHandler(RunTimeException.class)
public String handleException(Exception e, HttpServletRequest request) {
Map<String, Object> map = new HashMap<>();
//传入我们自己的错误状态码 4xx 5xx
/**
* Integer statusCode = (Integer) request
.getAttribute("javax.servlet.error.status_code");
*/
request.setAttribute("javax.servlet.error.status_coede", 500);
map.put("code", "user.notexist");
map.put("message", "用户出错啦");
request.setAttribute("ext", map);
//转发到/error
return "forward:/error";
}
}
首先先分析下springboot的自动配置
先看ErrorMvcAutoConfiguration
@Configuration
@ConditionalOnWebApplication(type = Type.SERVLET)
@ConditionalOnClass({ Servlet.class, DispatcherServlet.class })
// Load before the main WebMvcAutoConfiguration so that the error View is available
@AutoConfigureBefore(WebMvcAutoConfiguration.class)
@EnableConfigurationProperties({ ServerProperties.class, ResourceProperties.class,
WebMvcProperties.class