В этом уроке мы тщательно изучим CompletableFuture, сосредоточившись на методах runAsync и supplyAsync. Мы проанализируем, что означает исключение в контексте асинхронных задач и как с ними работать. Кроме того, мы познакомимся с методами exceptionally и handle для обработки исключительных ситуаций.