SpringBoot: 12.異常處理方式2(使用@ExceptionHandle註解)(轉)

 

一、編寫controllerjava

複製代碼
package com.bjsxt.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

/**
 * Created by Administrator on 2019/2/13.
 */
@Controller
public class IndexController {

    @RequestMapping("toIndex")
    public String toIndex(){
        String str=null;
        //會發生空指針異常
        str.length();
        return "index";
    }

    @RequestMapping("toIndex2")
    public String toIndex2(){
        //會發生算術異常
        int num=10/0;
        return "index";
    }

    @RequestMapping("toIndex3")
    public String toIndex3(){
        //會發生數組下標越界異常,該異常沒有專門處理,會跳到自定義的錯誤頁面
        String[] arr={"aa","bb","cc"};
        System.out.print(arr[3]);
        return "index";
    }

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

}
複製代碼

目錄結構,該方法存在的弊端就是在每個controller裏面都要添加這些異常處理代碼,形成代碼冗餘拉雜web

相關文章
相關標籤/搜索