代码
package com.zjc.springboot_test.domain;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.servlet.ModelAndView;
@RestControllerAdvice
public class CustomExtHandler {
private static final Logger LOG = LoggerFactory.getLogger(CustomExtHandler.class);
/**
* 捕获全局异常,处理所有不可知的异常
*/
@ExceptionHandler(value = Exception.class)
Object handleException(Exception e, HttpServletRequest request) {
LOG.error("url {}, msg {}", request.getRequestURL(), e.getMessage());
Map<String, Object> map = new HashMap<>();
map.put("code", 100);
map.put("msg", e.getMessage());
map.put("url", request.getRequestURL());
return map;
}
/**
* 功能描述:处理自定义异常
*
* @return
*/
@ExceptionHandler(value = MyException.class)
Object handleMyException(MyException e, HttpServletRequest request) {
//进行页面跳转
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("error.html");
modelAndView.addObject("msg", e.getMessage());
return modelAndView;
//
// //返回json数据,由前端去判断加载什么页面
// Map<String, Object> map = new HashMap<>();
// map.put("code", e.getCode());
// map.put("msg", e.getMsg());
// map.put("url", request.getRequestURL());
// return map;
}
}

本文介绍了一个Spring Boot项目的异常处理机制,包括全局异常捕捉及自定义异常处理。通过@RestControllerAdvice注解实现异常拦截,对于未知异常返回JSON格式的信息,对于自定义异常则进行页面跳转。
976

被折叠的 条评论
为什么被折叠?



