
本文共 2019 字,大约阅读时间需要 6 分钟。
Spring Boot全局异常处理配置与使用技巧
一、全局异常处理配置
在Spring Boot项目中,可以通过@ControllerAdvice注解配置全局异常处理,将常见的异常类型设置为捕捉范围。例如,设置@ExceptionHandler(Exception.class)可将所有非法异常捕获。具体实现方式如下:
创建GlobalExceptionHandler类,注解@ControllerAdvice,这样才能被Spring Boot识别为全局异常处理器。默认扫描所有Whilst顶层异常,通过@ExceptionHandler注解设定要捕获的异常类型。
配置全局异常处理器时务必将其单独作为一个bean文件或放置在与其他非bean文件共存的文件夹中。避免与其他非bean文件混杂,以免导致@ControllerAdvice无法识别。
在处理异常时,需返回符合接口定义的响应对象。确保返回结果结构标准化,易于前端识别处理。
二、自定义异常处理配置
对于项目中定义的自定义异常(如LoginException类),需确保其继承自Runtime Exception,否则无法被@ControllerAdvice捕捉。具体实现方法如下:
三、常见异常抛出与捕捉规则
在编写接口方法时,需遵守以下异常抛出规则:
class LoginException extends RuntimeException { // 定义异常属性和构造函数 }
四、代码示例及其解读
<例1>全局异常处理器配置:
@ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) @ResponseBody public ResponseCommand exceptionHandle(RuntimeException e) { e.printStackTrace(); return new ResponseCommand(100, "请求异常"); }
@ExceptionHandler(LoginException.class)@ResponseBodypublic ResponseCommand exceptionLogin(LoginException e) { e.printStackTrace(); return new ResponseCommand(100, "登录异常");}
}
<例2>自定义异常定义:
package com.icode.common.constant.exception;
import lombok.Data;
@Data public class LoginException extends RuntimeException { private Integer status;
public LoginException(String message) { super(message);}
}
<例3>接口异常抛出示例:
@PostMapping("article/validate/postArticle") public String saveArticle(String token, ArticleRequestCommand command) throws Exception { // 可捕捉到全局异常 throw new RuntimeException("可以捕捉的异常"); // 无法被捕捉到 throw new Exception("无法捕捉的异常"); return "succ"; }
以上配置方式有助于规范异常处理流程,确保程序在异常情况下能够正常报错返回。在编写预警信息时,建议遵循以下规范:
- 错误码设计要唯一且一致
- 错误信息尽量简洁明了,并便于理解
- 返回格式统一,方便前端处理
发表评论
最新留言
关于作者
