需求背景
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异常处理内容:可见此教程
完整源码下载
其他资料
下一章教程
SpringBoot从入门到精通教程(十九)- API接口防刷机制
该系列教程
至此,全部介绍就结束了
------------------------------------------------------
------------------------------------------------------
关于我(个人域名)
期望和大家一起学习,一起成长,共勉,O(∩_∩)O谢谢
欢迎交流问题,可加个人QQ 469580884,
或者,加我的群号 751925591,一起探讨交流问题
不讲虚的,只做实干家
Talk is cheap,show me the code