Java代码中,执行sql异常后,需要写一个全局异常,判断Exception异常是否包含特定词语进行返回自定义异常,该怎么写
时间: 2023-12-27 20:02:45 浏览: 66
在 Java 代码中,可以通过实现 `Exception` 类的子类或者扩展 `Exception` 类来自定义一个异常,并在全局异常处理器中进行捕获和处理。
以下是一个实现 `Exception` 子类的示例:
```java
public class CustomException extends Exception {
public CustomException(String message) {
super(message);
}
}
```
在执行代码时,可以通过捕获 `Exception` 异常,并判断异常信息中是否包含特定词语的方式,来抛出自定义异常。例如:
```java
try {
// 执行代码
} catch (Exception e) {
if (e.getMessage().contains("特定词语")) {
throw new CustomException("自定义异常信息");
} else {
// 处理其他异常
}
}
```
在全局异常处理器中,可以通过捕获 `CustomException` 异常并进行处理,例如:
```java
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(CustomException.class)
public ResponseEntity<CustomErrorResponse> handleCustomException(CustomException ex) {
CustomErrorResponse response = new CustomErrorResponse(HttpStatus.BAD_REQUEST.value(), ex.getMessage());
return new ResponseEntity<>(response, HttpStatus.BAD_REQUEST);
}
}
```
在上述全局异常处理器中,当捕获到 `CustomException` 异常时,会返回一个自定义的错误响应对象 `CustomErrorResponse`,其中包含了异常的状态码和异常信息。返回的 HTTP 状态码为 `BAD_REQUEST`,即 400。
注意,全局异常处理器需要使用 `@ControllerAdvice` 注解进行标记,并在处理异常的方法上使用 `@ExceptionHandler` 注解指定需要处理的异常类型。同时,需要在 Spring Boot 应用程序的配置文件中,启用自动异常处理机制,例如:
```
spring.mvc.throw-exception-if-no-handler-found=true
spring.resources.add-mappings=false
```
这样,当应用程序发生异常时,会自动被全局异常处理器处理,并返回自定义的错误响应。
阅读全文