SpringBoot全局异常捕获:优雅处理异常,构建健壮应用

在SpringBoot开发中,异常处理是保证应用健壮性的重要环节。本文将详细介绍如何使用@ControllerAdvice@ExceptionHandler注解实现全局和自定义异常捕获,并提供清晰易懂的代码示例,帮助你轻松掌握异常处理技巧。

1. 创建全局异常处理类

首先,创建一个全局异常处理类GlobalExceptionHandler,使用@ControllerAdvice注解标识,用于处理所有未被捕获的异常:

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(Exception.class)
    public ResponseEntity<String> handleException(Exception e) {
        // 处理其他异常,返回自定义的错误信息
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body('Internal Server Error');
    }
}

2. 创建自定义异常类

为了更精细地处理特定异常,可以创建自定义异常类。例如,创建一个名为MyException的自定义异常类:

public class MyException extends RuntimeException {

    public MyException(String message) {
        super(message);
    }
}

3. 在控制器中抛出异常

在控制器中,可以根据业务逻辑抛出自定义异常或其他异常。例如:

@RestController
public class HelloController {

    @GetMapping('/hello')
    public String hello() {
        throw new MyException('Something went wrong');
    }
}

4. 激活全局异常处理器

在启动类上添加@EnableWebMvc注解,激活全局异常处理器:

@EnableWebMvc
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

现在,当访问/hello路径时,会抛出MyException异常,并被GlobalExceptionHandler中的handleException方法捕获。其他未定义的异常也会被该方法捕获并返回自定义的错误信息。

总结

通过上述步骤,你可以在SpringBoot应用中轻松实现全局和自定义异常捕获,提高代码的健壮性和可维护性。

注意: 以上只是一个简单的示例,你可以根据实际需求扩展和修改异常处理逻辑,例如记录日志、返回更详细的错误信息等。

SpringBoot全局异常捕获:优雅处理异常,构建健壮应用

原文地址: https://www.cveoy.top/t/topic/b2wh 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录