Ich habe ein Problem beim Versuch, Server-Fehler auf meinem Rest-Service verantwortlich für die Dateneinfügung zu behandeln.Play Framework-Fehler bei der Verwendung von runAsync
public CompletableFuture<Result> insertSomething() throws IOException {
JsonNode jsNode = request().body().asJson();
format json node to be used
}
return CompletableFuture.runAsync(() -> {
try {
service.insertSomething(something);
} catch (ParseException e) {
internalServerError();
}
})
.thenApply(future -> created("data inserted"))
.exceptionally(ex -> internalServerError());
}
Die internalServerError wird nie geworfen und es halten „Daten eingefügt“ sagen. Selbst wenn ich einige Daten sende, die die ParseException auslösen. Und im Debug-Modus sehe ich, wie es den Fang passiert, aber nichts wird geworfen.
Dankt im Voraus
Eigentlich sind Sie nur den 'ParseException' dämpfen. Haben Sie vor, im 'catch' Block eine' throw' Anweisung zu schreiben? Wenn dies der Fall ist, müssen Sie eine 'RuntimeException' auslösen, und hier ist' CompletionException' am besten geeignet, z. 'Werfen Sie eine neue CompletionException (e);'. – acelent