我在春季启动应用程序中实际上遇到了一个问题,我开发了一个链接到s3存储桶的静态api,我已经自定义了一些异常,但是当我运行url以获取控制台中不存在的对象时,我看到了此错误异常在我的控制台中:
2019-07-25 09:06:45.733错误1 --- [-nio-443-exec-1]
o.a.c.c.C。[。[。[/]。[dispatcherServlet]:的Servlet.service()
路径[]中的servlet [dispatcherServlet]抛出异常
[请求处理失败;嵌套异常为
com.amazonaws.services.s3.model.AmazonS3Exception:指定的密钥
不存在。 (服务:Amazon S3;状态代码:404;错误代码:
NoSuchKey;要求编号:60E24BCF6860FC66; S3扩展请求ID:
DUEnMWN7YZKug74Q15uHt4Zei3 + a7SxTNYzoj99O0YW58WOwvkdM1kwYpcHrGJiTrLkRLOdUL5I =),
S3扩展请求ID:
DUEnMWN7YPOAIZADg74Q15uHt4Zei3 + a7SxTNYzoj99O0YW58WOwvkdM1kwYpcHrGJiTrLkRLOdUL5I =]
根本原因
com.amazonaws.services.s3.model.AmazonS3Exception:指定的密钥
不存在。 (服务:Amazon S3;状态代码:404;错误代码:
NoSuchKey;要求编号:60E24BCF6860FC66; S3扩展请求ID:
DUEnMWN7YZKug74Q15uHt4ZDFSFSQSDei3 + a7SxTNYzoj99O0YW58WOwvkdM1kwYpcHrGJiTrLkRLOdUL5I =)
所以我的问题是如何在2点上针对此错误执行自定义:
控制台中未显示此错误(从技术上讲,我不是指更改日志参数)
使用某些方法处理此异常
最佳答案
编写自定义异常处理程序以捕获您的异常并做一些优雅的事情。
@ControllerAdvice
@RestController
public class CustomExceptionHandler extends ResponseEntityExceptionHandler {
@ExceptionHandler(AmazonS3Exception.class)
public final ResponseEntity<Object> handleAmazonS3Exception(AmazonS3Exception ex, WebRequest request) {
ApiError apiError = new ApiError(UNPROCESSABLE_ENTITY, ex.getLocalizedMessage(), ex.getErrors());
return new ResponseEntity<>(apiError, UNPROCESSABLE_ENTITY);
}
}
在这里,
UNPROCESSABLE_ENTITY
是HttpStatus
(org.springframework.http.HttpStatus
)请根据您的要求更改方法
handleAmazonS3Exception(...)
的代码。