深入理解@ExceptionHandler:Spring 异常处理的利器
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;
@ControllerAdvice
public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {
// 处理所有的Exception类型的异常
@ExceptionHandler(Exception.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public String handleAllExceptions(Exception ex) {
// 记录日志,通知管理员或者进行其他的异常处理
return "An error occurred: " + ex.getMessage();
}
// 处理特定的自定义异常
@ExceptionHandler(CustomException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public String handleCustomException(CustomException ex) {
// 记录日志,通知管理员或者进行其他的异常处理
return "Custom error occurred: " + ex.getMessage();
}
// 其他异常处理...
}
// 自定义异常类
class CustomException extends RuntimeException {
public CustomException(String message) {
super(message);
}
}
这个代码示例展示了如何在Spring应用中使用@ControllerAdvice
和@ExceptionHandler
来创建全局异常处理器。这里定义了两个异常处理方法,分别用于处理所有Exception
类型的异常和特定的CustomException
。通过这种方式,开发者可以集中处理应用中可能发生的异常,而不必在每个控制器方法中重复处理相同的逻辑。
评论已关闭