springboot _全局异常@RestControllerAdvice@ExceptionHandler
全局異常
Springboot對(duì)Controller層方法進(jìn)行統(tǒng)一異常處理
【注】如果全部異常處理返回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請(qǐng)求發(fā)生異常...");
????????if (res.getStatus() == HttpStatus.BAD_REQUEST.value()) {
????????????logger.info("修改返回狀態(tài)值為200");
????????????res.setStatus(HttpStatus.OK.value());
????????}
????????if (e instanceof NullPointerException) {
????????????logger.error("代碼00:" + e.getMessage(), e);
????????????return "發(fā)生空指針異常";
????????} else if (e instanceof IllegalArgumentException) {
????????????logger.error("代碼01:" + e.getMessage(), e);
????????????return "請(qǐng)求參數(shù)類(lèi)型不匹配";
????????} else if (e instanceof SQLException) {
????????????logger.error("代碼02:" + e.getMessage(), e);
????????????return "數(shù)據(jù)庫(kù)訪問(wèn)異常";
????????} else {
????????????logger.error("代碼99:" + e.getMessage(), e);
????????????return "服務(wù)器代碼發(fā)生異常,請(qǐng)聯(lián)系管理員";
????????}
????}
}
總結(jié)
以上是生活随笔為你收集整理的springboot _全局异常@RestControllerAdvice@ExceptionHandler的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: springboot _配置过滤器、拦截
- 下一篇: 无招胜有招之spring _高频面试题