[英]Dropwizard Exception Mapping
我創建了兩個 ExceptionMappers:
GenericExceptionMapper implements ExceptionMapper<Throwable>
和
ValidationExceptionMapper implements ExceptionMapper<javax.validation.ValidationException>
GenericExceptionMapper 檢查異常是否屬於特定類型,如果是特定類型,則將進行某種映射。 在所有其他情況下,它將映射到 500。
ValdationExceptionMapper 將映射到具有特定響應的 400。
現在我正在觀察一些奇怪的事情。 如果我省略 ValidationExceptionMapper,則不會調用 GenericExceptionMapper。 此外,如果我切斷了 ExceptionMappers 的數據庫連接非將被觸發。 在這兩種情況下,響應都是 500 html 格式。 我真正想要的是每個異常都應該被映射器捕獲。
我正在使用 Dropwizard 1.0.5 和設置registerDefaultExceptionMappers: false
。
首先,我不認為設置@Singleton 是一個資源的好主意。
另一方面:這是通過實現ExtendedExceptionMapper自定義為特定異常給出響應的正確方法:
environment.jersey().register(new ExtendedExceptionMapper<WebApplicationException>() {
@Override
public Response toResponse(WebApplicationException exception) {
return Response.status(Response.Status.NOT_FOUND).build();
}
@Override
public boolean isMappable(WebApplicationException e) {
return Throwables.getRootCause(e).getClass() == MustacheNotFoundException.class;
}});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.