SpringBoot学习五:全局捕获异常

若我们开发项目时,会经常返回404,500错误,这种错误在生产开发是不允许出现的,因此就需要对这类错误进行控制。

这里运用了Spring切面的思想,对异常报错进行拦截。

会用到的注解

@ExceptionHandler

表示拦截异常

@ControllerAdvice

1、作为全局异常处理的切面类

2、可以指定扫描范围

3、对于返回值有很好的处理。如果是直接返回 model 类的话,需要使用 @ResponseBody 进行 json 转换返回 String,表示跳到某个 view,返回 modelAndView,返回 model + @ResponseBody

下面为一拦截小Demo

新建拦截类GlobalExceptionHandler

package com.sm.controller;

import java.util.HashMap;
import java.util.Map;

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

@ControllerAdvice
public class GlobalExceptionHandler {

	@ExceptionHandler(RuntimeException.class)
	@ResponseBody
	public Map<String, Object> exceptionHandler() {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("errorCode", "500");
		map.put("errorMsg", "系統错误!");
		return map;
	}

}
新建异常类IndexController
package com.sm.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class IndexController {

	@RequestMapping("/indexController")
	public String index() {
		int i = 1/0;
		return "IndexController";
	}
	
	
}

启动项目:

访问http://localhost:8081/indexController


异常错误已成功拦截。



猜你喜欢

转载自blog.csdn.net/cuipeng1019/article/details/80296942