SpringBoot: 13.異常處理方式3(使用@ControllerAdvice+@ExceptionHandle註解)(轉)

 

問題:使用@ExceptionHandle註解須要在每個controller代碼裏面都添加異常處理,會咋成代碼冗餘web

解決方法:新建一個全局異常處理類,添加@ControllerAdvice註解便可spring

複製代碼
package com.bjsxt.exception;

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;

/**
 * Created by Administrator on 2019/2/14.
 * 全局異常處理類
 */

@ControllerAdvice
public class GlobalException {
    /**
     * 處理ArithmeticException異常,該@ExceptionHandler註釋的value屬性能夠是一個數組,
     * 而後再根據注入的exception判斷對不一樣異常分別進行不一樣的處理,也能夠寫多個controller,
     * 對多個不一樣異常進行處理,這裏採用第二種
     * @param e 會將產生異常對象注入到方法中
     * @return 該方法須要返回一個 ModelAndView:目的是可讓咱們封裝異常信息以及視圖的指定
     */
    @ExceptionHandler(value = {ArithmeticException.class})
    public ModelAndView arithmeticExceptionHandler(Exception e){
        ModelAndView mv=new ModelAndView("error_arithmetic");
        mv.addObject("msg",e.toString());
        return mv;
    }


    /**
     * 處理NullPointerException異常
     * @param e 會將產生異常對象注入到方法中
     * @return 該方法須要返回一個 ModelAndView:目的是可讓咱們封裝異常信息以及視圖的指定
     */
    @ExceptionHandler(value = {NullPointerException.class})
    public ModelAndView nullPointerExceptionHandler(Exception e){
        ModelAndView mv=new ModelAndView("error_nullPointer");
        mv.addObject("msg",e.toString());
        return mv;
    }
}
複製代碼
相關文章
相關標籤/搜索