Spring Boot 中全局異常處理器
阿新 • • 發佈:2018-07-25
clas 重定向 img 就是 全局異常處理 tro inf src har
Spring Boot 中全局異常處理器,就是把錯誤異常統一處理的方法。等價於Springmvc中的異常處理器。
步驟一:基於前面的springBoot入門小demo修改
步驟二:修改HelloController類
修改HelloController,使得訪問/hello一定會產生異常: some exception
package cn.xdf.springboot.web; import java.text.DateFormat; import java.util.Date; import org.springframework.stereotype.Controller; importorg.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class HelloController { @RequestMapping("/hello") public String hello(Model m) throws Exception{ m.addAttribute("now",DateFormat.getDateTimeInstance().format(new Date()));if (true) { //制造必然異常 throw new Exception("some exception 異常內容!"); } return "hello"; //視圖重定向hello.jsp } }
步驟三:創建全局異常處理器類GlobalExceptionHandler
新增加一個類GlobalExceptionHandler,用於捕捉Exception異常以及其子類。
捕捉到之後,把異常信息,發出異常的地址放進ModelAndView裏,然後跳轉到 errorPage.jsp
package cn.xdf.springboot.exception;import javax.servlet.http.HttpServletRequest; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.servlet.ModelAndView; @ControllerAdvice //@ControllerAdvice 該註解定義全局異常處理類 public class GlobalExceptionHandler { @ExceptionHandler(value = Exception.class) //@ExceptionHandler 該註解聲明異常處理方法 public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception { ModelAndView mav = new ModelAndView(); mav.addObject("exception", e); //異常內容(頁面展示) mav.addObject("url", req.getRequestURL()); //請求的url地址(頁面展示) mav.setViewName("errorPage"); //設置視圖名稱 return mav; } }
步驟四:創建errorPage.jsp
errorPage.jsp 格式化一下,稍微好看點顯示這些異常信息
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>系統故障</title> </head> <body> <div style="width:500px;border:1px solid lightgray;margin:200px auto;padding:80px"> 系統出現了異常,異常原因是: ${exception} <br><br> 出現異常的地址是: ${url} </div>
</body> </html>
步驟五:測試
因為配置了熱部署,就不用重啟了,刷新頁面即可,效果圖如下:
Spring Boot 中全局異常處理器