SpringBoot學習12:springboot異常處理方式2(使用@ExceptionHandle注解)


1、編寫controller

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里面都要添加這些異常處理代碼,造成代碼冗余拉雜

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM