//模拟个异常
public class UserNotExistException extends RuntimeException {
public UserNotExistException() {
super("用户名不存在!!!");
}
}
//异常处理类
@ControllerAdvice
public class MyExceptionHandler {
//不会自动适应浏览器客户端返回的都是json
/*@ResponseBody
@ExceptionHandler(UserNotExistException.class)
public Map<String,Object> HandlerException(Exception e , HttpServletRequest request){
Map<String,Object> map = new HashMap<>();
map.put("code","user.notexist");
map.put("msg",e.getMessage());
map.put("msgd",e.getMessage());
return map;
}*/
//自适应浏览器和客户端
@ExceptionHandler(UserNotExistException.class)
public String handlerException(Exception e , HttpServletRequest request){
Map<String,Object> map = new HashMap<>();
map.put("code","user.notexist");
map.put("msg",e.getMessage());
// map.put("msgd",e.getMessage());
request.setAttribute("javax.servlet.error.status_code",500);
request.setAttribute("ext",map);
return "forward:/error";
}
//添加自己的异常属性
import org.springframework.boot.web.servlet.error.DefaultErrorAttributes
@Component
public class MyErrorAttributes extends DefaultErrorAttributes {
@Override
public Map<String, Object> getErrorAttributes(WebRequest webRequest, boolean includeStackTrace) {
Map<String, Object> map = super.getErrorAttributes(webRequest, includeStackTrace);
map.put("company","atui");
//我们的异常处理器携带的数据
Map<String,Object> ext = (Map<String, Object>) webRequest.getAttribute("ext", 0);
map.put("ext",ext);
return map;
}
页面取值
<h1>status:[[${status}]]</h1>
<h2>timestamp:[[${timestamp}]]</h2>
<h2>exception:[[${exception}]]</h2>
<h2>message:[[${message}]]</h2>
<h2>ext:[[${ext.code}]]</h2>
<h2>ext:[[${ext.message}]]</h2>