实验报告1--Spring Boot自定义异常处理

一、实验目的

在Spring Boot应用中,异常处理是一个非常重要的环节。合理的异常处理可以提升系统的健壮性和用户体验。本实验的目标是学习如何在Spring Boot中实现自定义异常处理。

二、实验环境

  • Java Development Kit (JDK) 1.8及以上
  • Spring Boot 2.x
  • IDE:IntelliJ IDEA 或 Eclipse

三、实验步骤

1. 创建Spring Boot项目

使用Spring Initializr创建一个新的Spring Boot项目,选择的依赖项包括:Spring Web和Spring Boot DevTools。

2. 创建自定义异常类

首先,我们需要创建一个自定义的异常类。这将使我们能在代码中抛出具体的自定义异常。

package com.example.exception;

public class CustomException extends RuntimeException {
    private String message;

    public CustomException(String message) {
        super(message);
        this.message = message;
    }

    public String getMessage() {
        return message;
    }
}

3. 创建全局异常处理类

接下来,我们创建一个全局异常处理类,使用@ControllerAdvice注解来处理应用中抛出的所有异常。

package com.example.exception;

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(CustomException.class)
    public ResponseEntity<String> handleCustomException(CustomException ex) {
        return new ResponseEntity<>(ex.getMessage(), HttpStatus.BAD_REQUEST);
    }

    @ExceptionHandler(Exception.class)
    public ResponseEntity<String> handleException(Exception ex) {
        return new ResponseEntity<>("系统异常: " + ex.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
    }
}

4. 创建测试Controller

为测试自定义异常处理功能,我们可以创建一个简单的Controller。假设我们有一个接口,当请求参数不合法时抛出自定义异常。

package com.example.controller;

import com.example.exception.CustomException;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

    @GetMapping("/test")
    public String test(@RequestParam(required = false) String name) {
        if (name == null || name.isEmpty()) {
            throw new CustomException("参数 'name' 不能为空");
        }
        return "Hello, " + name;
    }
}

5. 运行项目

完成上述步骤后,启动Spring Boot应用。在浏览器中请求http://localhost:8080/test,不传递name参数。可以看到,我们将会得到自定义的错误信息:“参数 'name' 不能为空”。

6. 测试异常处理

我们可以继续测试,如果故意引发系统异常(比如请求一个不存在的URL),全局异常处理器将捕获该异常,并返回对应的系统错误信息:“系统异常: ...”。

四、实验总结

通过这个实验,我们实现了Spring Boot中的自定义异常处理。自定义异常类可以帮助我们明确问题,提供更清晰的错误信息。而通过@ControllerAdvice@ExceptionHandler,我们能够集中处理异常,简化了代码的复杂度。这种方式增强了系统的可维护性和用户的使用体验。

在实际应用中,我们可以根据需要扩展异常处理逻辑,以支持更多的异常类型,或者返回更丰富的错误信息。这将使我们的应用程序更加健壮和用户友好。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部