SpringBoot----全局异常处理

SpringBoot----全局异常处理

1、使用上个例子springboot2中的代码,在UserController.java中添加一个方法,代码如下:

/**
* @Description:测试异常类是否生效,返回json数据
* 访问地址:http://localhost:8080/users/zeroException
* @return
* @author:zoey
* @date:2018年3月8日
 */
@RequestMapping("/zeroException")
@ResponseBody
public int zeroException() {
	System.out.println("进入异常测试方法");
	return 100/0;
}

2、SpringBootBaseApplication.java启动类代码不变,如下:

package com.etc.springboot2;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
/**
 * @Description:启动类,启动整个项目
 * @author zoey
 * @date:2018年3月7日
 */
@SpringBootApplication
@ComponentScan(basePackages="com.etc.*")//如果不写,默认扫描这个包下的所有类还有子包下的所有类
@MapperScan(value = "com.etc.mapper")//这样才能找到mapper文件
public class SpringBootBaseApplication {
	public static void main(String[] args) {
		SpringApplication.run(SpringBootBaseApplication.class, args);
		System.out.println("启动完成。。。。。。。。。。。");
	}
}

3、如果直接访问异常方法,页面进入错误页面error.jsp,控制台报错:

访问地址:http://localhost:8080/users/zeroException,效果如下:


控制台报错如下:


4、要处理这种异常,在com.etc.exception包下新建GlobalDefaultExceptionHandler.java类如下:

package com.etc.exception;

import javax.servlet.http.HttpServletRequest;

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
/**
 * @Description:全局异常类,处理项目中的异常(统一处理)
 * 统一处理的步骤:
	1、新建一个类GlobalDefaultExceptionHandler,
	2、在class注解上@ControllerAdvice,
	3、在方法上注解上@ExceptionHandler(value = Exception.class)
 * @author zoey
 * @date:2018年3月8日
 */
@ControllerAdvice
public class GlobalDefaultExceptionHandler {
	
	 @ExceptionHandler(value = Exception.class)
	 public void defaultErrorHandler(HttpServletRequest request, Exception e)  {
		 //打印异常信息
		 e.printStackTrace();
	     System.out.println("GlobalDefaultExceptionHandler.defaultErrorHandler()");
	        
	 }
}

5、再次访问http://localhost:8080/users/zeroException, 页面不报错,显示空白,效果如下:


控制台显示异常信息如下:


总结如下:

想要捕获项目中的异常,步骤如下:

1、在com.etc.exception包下新建一个全局异常类GlobalDefaultExceptionHandler.java

2、在GlobalDefaultExceptionHandler.java类上面添加@ControllerAdvice注解

3、在类中编写defaultErrorHandler()方法,然后打印异常信息

4、在defaultErrorHandler()方法上添加 @ExceptionHandler(value = Exception.class)注解

猜你喜欢

转载自blog.csdn.net/zz2713634772/article/details/79482030