簡體   English   中英

Dropwizard 異常映射

[英]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;
}});

Dropwizard 文檔,模板錯誤部分

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM