第四章 SpringBoot2.0单元测试进阶实战和自定义异常处理
03-4 SpringBoot2.x配置全局异常实战
讲解:服务端异常讲解和SpringBoot配置全局异常实战
1、默认异常测试 int i = 1/0,不友好
2、异常注解介绍
@ControllerAdvice 如果是返回json数据 则用 RestControllerAdvice,就可以不加 @ResponseBody
//捕获全局异常,处理所有不可知的异常
@ExceptionHandler(value=Exception.class)
1.Spring Boot搭建本次测试框架

目录结构

ExceptionController.class详细信息
package com.lcz.spring_demo6.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author : codingchao
* @date : 2021-11-19 11:14
* @Description:
**/
@RestController
public class ExceptionController {
@GetMapping(value = "/exception")
public Object testException(){
return "全局异常测试";
}
}
测试结果:

引入一个异常,并测试结果
修改ExceptionController.java中,引入下面一条语句。
int i= 1/0;
报错结果如图所示


2.定义全局异常处理类
新建domain包,新建一个CustomExceptionHandler类。
package com.lcz.spring_demo6.domain;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
/**
* @author : codingchao
* @date : 2021-11-19 11:23
* @Description:
**/
@RestControllerAdvice
public class CustomExceptionHandler {
//日志打印
private static final Logger logger = LoggerFactory.getLogger(CustomExceptionHandler.class);
// 返回值
public static final HashMap<String,Object> map = new HashMap<>();
//捕获全局异常,处理所有不可知的异常
@ExceptionHandler(value = Exception.class)
public Object handlerException(Exception e, HttpServletRequest request){
logger.error("url {},msg {}",request.getRequestURL(),e.getMessage());
map.put("code",100);
map.put("msg",e.getMessage());
map.put("url",request.getRequestURL());
return map;
}
}
测试结果


本文介绍了如何在SpringBoot项目中实现全局异常处理。通过创建自定义异常处理器并使用@ControllerAdvice和@ExceptionHandler注解来捕获并处理运行时异常,从而提供更友好的错误响应。
2698

被折叠的 条评论
为什么被折叠?



