私は約束を広範囲に使用するJavascriptの作成に慣れています。そのため、CompleteFutures(これは明らかに約束と似ています)を試してみたいと思います。JavaでCompletableFutureエラー処理はどのように機能しますか?
Javascriptでは、約束のエラーが自動的にcatch
コールバックに渡されます。たとえば:CompletableFuturesで
new Promise(() => {
throw new Error('error.');
})
.catch(err => console.warn(err));
、私は次のことを試してみました:
CompletableFuture.supplyAsync(() -> {
someApiRequest();
})
.exceptionally(err -> {
err.printStackTrace();
return null;
});
しかし、私はerror: unreported exception IOException; must be caught or declared to be thrown
を得ました。 someApiRequest
の周りにtry/catchを追加するとエラーが消えます。手動でtry/catchを追加する必要がある場合、exceptionally
のポイントは何ですか? supplyAsync
に渡された関数のエラーを自動的に処理する方法は、exceptionally
によって自動的に処理されますか?
さらに、someApiRequest
が同期している場合、supplyAsyncは自動的に別のスレッドでそれを実行する必要がありますか?これは、チェック例外をスローするメソッドを許可しない
public T get();
: