springboot _全局异常@RestControllerAdvice@ExceptionHandler
全局異常
Springboot對Controller層方法進行統一異常處理
【注】如果全部異常處理返回json,那么可以使用 @RestControllerAdvice 代替 @ControllerAdvice ,這樣在方法上就可以不需要添加 @ResponseBody。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletRequest;
import java.sql.SQLException;
/**
?* Created by Administrator on 2019/8/25 0025.
?*/
@RestControllerAdvice
public class ControllerExceptionHandleAdvice {
????private final static Logger logger = LoggerFactory.getLogger(ControllerExceptionHandleAdvice.class);
????@ExceptionHandler
????public String handler(HttpServletRequest req, HttpServletResponse res, Exception e) {
????????logger.info("Restful Http請求發生異常...");
????????if (res.getStatus() == HttpStatus.BAD_REQUEST.value()) {
????????????logger.info("修改返回狀態值為200");
????????????res.setStatus(HttpStatus.OK.value());
????????}
????????if (e instanceof NullPointerException) {
????????????logger.error("代碼00:" + e.getMessage(), e);
????????????return "發生空指針異常";
????????} else if (e instanceof IllegalArgumentException) {
????????????logger.error("代碼01:" + e.getMessage(), e);
????????????return "請求參數類型不匹配";
????????} else if (e instanceof SQLException) {
????????????logger.error("代碼02:" + e.getMessage(), e);
????????????return "數據庫訪問異常";
????????} else {
????????????logger.error("代碼99:" + e.getMessage(), e);
????????????return "服務器代碼發生異常,請聯系管理員";
????????}
????}
}
總結
以上是生活随笔為你收集整理的springboot _全局异常@RestControllerAdvice@ExceptionHandler的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springboot _配置过滤器、拦截
- 下一篇: 无招胜有招之spring _高频面试题