实验报告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
,我们能够集中处理异常,简化了代码的复杂度。这种方式增强了系统的可维护性和用户的使用体验。
在实际应用中,我们可以根据需要扩展异常处理逻辑,以支持更多的异常类型,或者返回更丰富的错误信息。这将使我们的应用程序更加健壮和用户友好。