SpringBoot学习(三)

                                               异常处理

一、模拟异常

修改HelloController,使得访问/hello一定会产生异常: some exception

package com.zyj.blog.web;

import java.text.DateFormat;
import java.util.Date;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * @author zyj
 *
 */
@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";
	}
}

二、新增一个异常处理类

新增加一个类GlobalExceptionHandler,用于捕捉Exception异常以及其子类。捕捉到之后,把异常信息,发出异常的地址放进ModelAndView里,然后跳转到 errorPage.jsp

package com.zyj.blog.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;

/**
 * @author zyj
 *
 */
@ControllerAdvice
public class GlobalExceptionHandler {
	@ExceptionHandler(value = Exception.class)
    public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception {
        ModelAndView mav = new ModelAndView();
        mav.addObject("exception", e);
        mav.addObject("url", req.getRequestURL());
        mav.setViewName("errorPage");
        return mav;
    }
}

三、错误页面

errorPage.jsp 格式化一下,稍微好看点显示这些异常信息

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<div style="width:500px;border:1px solid lightgray;margin:200px auto;padding:80px">

系统 出现了异常,异常原因是:
    ${exception}
    <br><br>
    出现异常的地址是:
    ${url}
    </div>

四、测试

猜你喜欢

转载自blog.csdn.net/u011323390/article/details/84582744