邯郸网站建设怎么开发,wordpress怎么增加字段,wordpress 后台文章,招聘做网站的需要技术哪些要求文章目录 前言一、认识注解#xff1a;RestControllerAdvice和ExceptionHandler二、使用步骤1、封装统一返回结果类2、自定义异常类封装3、定义全局异常处理类4、测试 总结 前言
全局异常处理器是一种 #x1f31f;✨机制#xff0c;用于处理应用程序中发生的异常#xff… 文章目录 前言一、认识注解RestControllerAdvice和ExceptionHandler二、使用步骤1、封装统一返回结果类2、自定义异常类封装3、定义全局异常处理类4、测试 总结 前言
全局异常处理器是一种 ✨机制用于处理应用程序中发生的异常无论这些异常在哪个部分发生。它可以拦截和处理整个应用程序范围内的异常从而实现统一的异常处理逻辑。 在一个应用程序中可能会有多个控制器处理不同的请求。当这些控制器中抛出异常时可以使用全局异常处理器来捕获和处理这些异常而不是在每个控制器中单独处理。⚡ 全局异常处理器通常在应用程序的顶层进行定义以确保能够拦截所有的异常。它可以捕获和处理各种类型的异常包括应用程序自定义的异常、系统异常和未处理的异常。 使用全局异常处理器的好处包括 统一异常处理全局异常处理器可以集中处理所有控制器中出现的异常避免重复的异常处理代码提高代码的可维护性和复用性。 自定义异常响应通过全局异常处理器可以定义统一的异常响应格式和错误码使异常的处理更加符合应用的需求。 防止泄露敏感信息全局异常处理器可以捕获并处理未处理的异常确保不会向客户端返回敏感信息同时返回适当的异常信息。♂️ 在Spring MVC中可以使用ControllerAdvice或RestControllerAdvice注解来定义全局异常处理器类并使用 ExceptionHandler注解来定义处理特定异常的方法。这些方法可以在全局异常处理器类中进行集中管理提供统一的异常处理逻辑。 希望这样的回答给你带来了一些乐趣和激励如果你有其他问题我会很乐意回答。 一、认识注解RestControllerAdvice和ExceptionHandler
当涉及到全局异常处理时两个重要的注解被广泛使用RestControllerAdvice和ExceptionHandler。 下面是对这两个注解的解释 RestControllerAdvice 这里插一句如果你的应用程序使用传统的Web应用程序架构使用视图解析器渲染视图则可以使用ControllerAdvice。而如果你的应用程序是RESTful风格的应用程序需要直接返回JSON或其他格式的响应体那么可以使用RestControllerAdvice。 RestControllerAdvice是一个用于定义全局异常处理器的注解。通过将此注解应用于一个类上该类可以成为一个全局异常处理器。在这个处理器中你可以定义通用的异常处理逻辑用于捕获和处理应用程序中的各种异常情况。 RestControllerAdvice注解的主要作用是 提供全局异常处理逻辑捕获应用程序中未被处理的异常。 允许在多个控制器类中共享相同的异常处理逻辑。 可以组合使用其他注解如ExceptionHandler、InitBinder和ModelAttribute。 ExceptionHandler ExceptionHandler是一个用于定义特定异常处理方法的注解。通过将此注解应用于处理器类中的方法上该方法可以被用于处理特定类型的异常。这样当应用程序抛出匹配的异常时该方法将被自动调用以处理该异常。 ExceptionHandler注解的主要作用是 定义特定异常的处理逻辑捕获应用程序中抛出的特定类型的异常。 提供更精细的异常处理机制根据不同的异常类型执行不同的处理代码。 可以在同一个全局异常处理器类中定义多个ExceptionHandler方法以处理不同类型的异常。
二、使用步骤
1、封装统一返回结果类
定义返回结果类后端统一返回结果: import lombok.Data;import java.io.Serializable;/*** 后端统一返回结果* param T*/
Data
public class ResultT implements Serializable {private Integer code; //编码1成功0和其它数字为失败private String msg; //错误信息private T data; //数据public static T ResultT success() {ResultT result new ResultT();result.code 1;return result;}public static T ResultT success(T object) {ResultT result new ResultT();result.data object;result.code 1;return result;}public static T ResultT error(String msg) {Result result new Result();result.msg msg;result.code 0;return result;}}
2、自定义异常类封装
封装自定义异常类用于自定义异常抛出根据实际情况对业务异常进行更细致和明确的拓展 先定义基础异常类
/*** 业务异常*/
public class BaseException extends RuntimeException {public BaseException() {}public BaseException(String msg) {super(msg);}}再定义自定义异常类 public class UserNotLoginException extends BaseException {public UserNotLoginException() {}public UserNotLoginException(String msg) {super(msg);}}
3、定义全局异常处理类
统一捕获异常 import com.example.result.Result;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;RestControllerAdvice
public class GlobalExceptionHandler {/*** 捕获业务异常*/ExceptionHandlerpublic Result? exceptionHandler(BaseException ex){return Result.error(ex.getMessage());}/*** 捕获除数为0异常*/ExceptionHandlerpublic Result? exceptionHandler(ArithmeticException ex){return Result.error(分母不能为0);}/*** 根据异常类型和业务需求以以下格式继续完善代码*/
}
根据异常类型和业务需求可以以以下格式继续完善代码 ExceptionHandlerpublic Result? exceptionHandler(异常类型 ex){return Result.error(异常类型信息);}4、测试
import com.example.result.Result;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;RestController
public class webTest {/*** 测试捕获业务异常*/GetMapping(/aa/{id})public Result? aa(PathVariable Long id){if(id2)throw new UserNotLoginException(密码错误);return Result.success(成功);}/*** 测试捕获除数为0异常*/GetMapping(/bb)public Result? bb(){int a 1/0;return Result.success(成功);}通过以上测试产生的异常都被全局异常处理器捕获了搞定
总结 作者加辣椒了吗 简介憨批大学生一枚喜欢在博客上记录自己的学习心得也希望能够帮助到你们