我就是奇迹

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

@ExceptionHandler 是 Spring Framework 中的一个注解,主要用于处理控制器方法中抛出的异常。它能够捕获指定类型的异常并进行处理,通常与 @ControllerAdvice 配合使用,用来集中处理应用程序中的异常。

 

 

主要用途:

 

 

  1. 捕获和处理控制器层的异常@ExceptionHandler 可以用于控制器方法上,当指定异常类型发生时,自动调用该方法进行处理。

  2. 全局异常处理:与 @ControllerAdvice 一起使用时,可以集中管理全局的异常处理逻辑。

 

 

 

语法:

 

@ExceptionHandler(Exception.class)
public String handleException(Exception ex) {
    // 处理异常
    return "error";
}

 

说明:

 

 

  • @ExceptionHandler 只能处理当前类中抛出的异常。如果想要全局处理,可以配合 @ControllerAdvice 使用。

  • Exception.class 表示捕获 Exception 类型的异常,可以指定具体的异常类型来捕获不同的异常。

  • 该方法可以返回视图名称、错误信息或 JSON 数据,具体取决于你的需求。

 

 

 

示例:处理单个控制器的异常

 

@RestController
public class MyController {

    @GetMapping("/error")
    public String generateError() throws Exception {
        throw new Exception("Something went wrong");
    }

    @ExceptionHandler(Exception.class)
    public String handleException(Exception ex) {
        // 打印异常信息
        ex.printStackTrace();
        return "error"; // 返回错误页面的视图名
    }
}

 

示例:使用 

@ControllerAdvice

 处理全局异常

 

 

@ControllerAdvice 是一个用于全局异常处理的注解,可以在应用中统一处理所有控制器抛出的异常。

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(Exception.class)
    public String handleException(Exception ex) {
        // 打印异常信息
        ex.printStackTrace();
        return "error"; // 返回全局错误页面的视图
    }
}

 

适用场景:

 

 

  1. 输入校验失败:当用户输入不合法或请求参数错误时,抛出异常并返回友好的错误信息。

  2. 服务层异常:捕获服务层抛出的异常,并进行统一处理,如数据库操作异常。

  3. 全局异常处理:应用中的所有异常可以通过 @ControllerAdvice 和 @ExceptionHandler 进行集中管理。

 

 

 

总结:

 

 

  • @ExceptionHandler 用于捕获控制器方法中的异常并进行处理,可以指定具体的异常类型。

  • 配合 @ControllerAdvice 使用时,可以实现全局的异常处理。

  • 异常处理方法可以返回视图名称、错误信息或 JSON 数据,满足不同需求。

 

posted on 2025-05-12 12:35  我就是奇迹  阅读(97)  评论(0)    收藏  举报