gpt4 book ai didi

java - 优化 Spring RestControllerAdvice 多个异常

转载 作者:行者123 更新时间:2023-12-02 02:39:43 32 4
gpt4 key购买 nike

我有大约 20 到 30 种不同类型的不同异常,所有异常都扩展了 Java 中的 Exception 类。一个例子是:

public class NoHandlerFoundException extends Exception {

private static final long serialVersionUID = -9079454849611061074L;

public NoHandlerFoundException() {
super();
}

public NoHandlerFoundException(final String message) {
super(message);
}

}

其他示例是:

public class ResourceNotFoundException extends Exception{

private static final long serialVersionUID = -9079454849611061074L;

public ResourceNotFoundException() {
super();
}

public ResourceNotFoundException(final String message) {
super(message);
}

}

还有更多。正如你所看到的,大部分代码都是重复的,然后我使用 ControllerAdvice 之类的(我知道 ControllerAdvice 参数异常类中的代码应该是正确的):

@ExceptionHandler({NoHandlerFoundException.class, ResourceNotFoundException.class})
@ResponseStatus(value = HttpStatus.NOT_FOUND)
public @ResponseBody ExceptionResponse handleResourceNotFound(final NoHandlerFoundException exception,
final HttpServletRequest request) {

ExceptionResponse error = new ExceptionResponse();
error.setErrorMessage(exception.getMessage());
error.callerURL(request.getRequestURI());

return error;
}

所以我想知道我们是否有任何方法可以优化上述异常,而不是编写单个类多次执行几乎相同的工作,但仍然想区分它们。谢谢。

最佳答案

您可以使用以下方法来减少代码冗余。

    @ExceptionHandler(value = {NoHandlerFoundException.class, ResourceNotFoundException.class})
protected ResponseEntity handleInvalidDataException(RuntimeException exception, WebRequest request) {

ExceptionResponse error = new ExceptionResponse();
error.setErrorMessage(exception.getMessage());
error.callerURL(request.getRequestURI());

return new ResponseEntity<>(error, HttpStatus.NOT_FOUND);
}

关于java - 优化 Spring RestControllerAdvice 多个异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57186095/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com