SpringBoot从入门到精通教程(十八)- 全局异常处理

需求背景

Springboot全局异常处理用法,自定义error请求返回结果,前端可以统一处理服务端返回的内容

解决问题

如果不处理,当发生异常时,程序而又未及时处理捕获的话,前端会收到下面的返回结果,而日志文件中也记录不到了

代码演示

1. 项目目录结构:

2. 新建GlobalExceptionHandler.java文件

package com.md.demo;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;

/**
 * 统一异常处理
 * 
 * @author Minbo
 *
 */
@ControllerAdvice
public class GlobalExceptionHandler {

	protected static Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);

	@ExceptionHandler(Exception.class)
	public String handleException(Exception e) {
		logger.error("系统异常【全局异常】:" + e.getMessage(), e);
		return "error";
	}
}

3. InitRest.java文件

演示用法

package com.md.demo.rest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import com.md.demo.util.JsonResult;
import com.md.demo.util.ResultCode;

/**
 * @author Minbo
 */
@RestController
public class InitRest {

	protected static Logger logger = LoggerFactory.getLogger(InitRest.class);

	/**
	 * http://localhost:9090/hello
	 * 
	 * @return
	 */
	@GetMapping("/hello")
	public String hello() {
		return "Hello greetings from spring-boot2-exception";
	}

	/**
	 * http://localhost:9090/exception
	 * 
	 * @return
	 */
	@GetMapping("/exception")
	public String exception() {
		int a = 10 / 0;
		return "exception," + a;
	}

	@GetMapping("/error")
	public JsonResult error() {
		return new JsonResult(ResultCode.SUCCESS_FAIL, "error错误");
	}
}

注:自定义error请求返回结果,即定义了/error

案例演示

访问接口:http://localhost:9090/exception(故意制造一个异常)

同时:日志文件中也已经记录到了异常信息内容

更多Springboot异常处理内容:可见此教程

完整源码下载

我的Github源码地址:

https://github.com/hemin1003/spring-boot-study/tree/master/spring-boot2-study/spring-boot2-parent/spring-boot2-exception

其他资料

Spring Boot全局异常处理整理

下一章教程

SpringBoot从入门到精通教程(十九)- API接口防刷机制

该系列教程

SpringBoot从入门到精通教程

 

至此,全部介绍就结束了

 

------------------------------------------------------

------------------------------------------------------

 

关于我(个人域名)

我的开源项目集Github

 

期望和大家一起学习,一起成长,共勉,O(∩_∩)O谢谢

欢迎交流问题,可加个人QQ 469580884,

或者,加我的群号 751925591,一起探讨交流问题

不讲虚的,只做实干家

Talk is cheap,show me the code

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页