Java的異步調用確實可以處理異常。在Java中,異步調用通常是通過CompletableFuture
類實現的。當你在CompletableFuture
中執行一個任務時,如果該任務拋出異常,那么這個異常會被捕獲并存儲在CompletableFuture
實例中。你可以使用exceptionally
方法來處理這個異常。
以下是一個簡單的示例:
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
public class AsyncExceptionHandling {
public static void main(String[] args) {
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
throw new RuntimeException("An error occurred");
}).exceptionally(ex -> {
System.err.println("An exception occurred: " + ex.getMessage());
return "Default value";
});
try {
String result = future.get();
System.out.println("Result: " + result);
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
}
在這個示例中,我們創建了一個CompletableFuture
,它異步地執行一個任務,該任務拋出一個運行時異常。然后,我們使用exceptionally
方法來處理這個異常。當我們調用future.get()
時,它會返回null
,因為任務拋出了異常。最后,我們捕獲并打印異常信息。