- 自定义超时异常
/**
* 登陆超时异常
* 继承RuntimeException,不用在方法头上,显式抛出
* 继承Exception,需要在方法头上,显式抛出
* @author hedong
* @date 2018年12月16日 上午11:19:19
* @modifyNote
* @version 1.0
*/
public class TimeoutException extends RuntimeException {
public TimeoutException() {
super();
}
}
- 在Controller中抛出异常
@GetMapping("getExpt")
public Object getExpt() {
// throw new ServiceException("499","自定义异常");
throw new TimeoutException();//自定义超时异常
}
- 统一异常处理类
@RestControllerAdvice
public class CustomExceptionHandler {
public static final Logger logger=LoggerFactory.getLogger(CustomExceptionHandler.class);
/**
* Exception 需要处理的异常
* @Description
* @author hedong
* @date 2018年12月13日 下午11:00:55
* @modifyNote
* @param ex
* @param request
* @return
*/
@ExceptionHandler(Exception.class)
Object handException(Exception ex,HttpServletRequest request) {
logger.error("请求url:{}, 异常消息信息: {} ", request.getRequestURI(),ex.getMessage());
logger.error("详细异常信息:", ex);
Map<String,Object> map=new HashMap<String,Object>();
map.put("code", 100);
map.put("msg", "发生异常");
map.put("url",request.getRequestURI());
return map;
}
@ExceptionHandler(ServiceException.class)
Object handleMyException(ServiceException ex) {
//跳转到制定页面
// ModelAndView mv=new ModelAndView();
// mv.setViewName("error.html");
// mv.addObject("msg", ex.getMessage());
// return mv;
//返回消息
Map<String,Object> map=new HashMap<String,Object>();
map.put("code", ex.getCode());
map.put("msg", ex.getMsg());
return map;
}
@ExceptionHandler(TimeoutException.class)
Object handleTimeoutException(Exception ex) {
// 跳转到制定页面
ModelAndView mv=new ModelAndView();
mv.setViewName("loggin.html");
return mv;
}
}