SpringBoot之全局捕获异常

761 阅读1分钟

系统使用过程中,难免会出现BUG,但是如果出现BUG而导致了异常,不经过处理的话,就会将异常的相关信息直接显示在页面,十分不友好,而且容易出现更多的问题。所以这时候就需要全局捕获异常,以更友好的形式反馈给使用者。

SpringBoot设置全局捕获异常很简单,只要实现以下代码即可:

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> resultError(){
		Map<String,Object> result = new HashMap<>();
		result.put("errCode", "500");
		result.put("errMsg", "系统错误");
		return result;
	}
}

这段代码是返回JSON字符串给调用者,一旦出现RuntimeException异常即返回{"errCode":"500","errMsg":"系统错误"}

当然也可以返回统一自定义的对象,使用@ResponseBody返回JSON字符串。也可以用自定义的错误页面,那样就不需要@ResponseBody