При работе с сопрограммами во время их выполнения могут возникать исключения. Обработка исключений сопрограмм имеет решающее значение для правильного управления ошибками и потока управления. Вот несколько методов обработки исключений сопрограмм на разных языках программирования:
-
Python (с использованием asyncio):
import asyncio async def my_coroutine(): raise ValueError("Something went wrong!") async def main(): try: await my_coroutine() except ValueError as e: print(f"Caught exception: {str(e)}") asyncio.run(main())
-
JavaScript (с использованием async/await):
async function myCoroutine() { throw new Error("Something went wrong!"); } async function main() { try { await myCoroutine(); } catch (error) { console.log(`Caught exception: ${error.message}`); } } main();
-
Java (с использованием CompletableFuture):
import java.util.concurrent.CompletableFuture; public class CoroutineExample { public static CompletableFuture<Void> myCoroutine() { CompletableFuture<Void> future = new CompletableFuture<>(); future.completeExceptionally(new RuntimeException("Something went wrong!")); return future; } public static void main(String[] args) { myCoroutine() .exceptionally(ex -> { System.out.println("Caught exception: " + ex.getMessage()); return null; }); } }
-
C# (с использованием async/await):
using System; using System.Threading.Tasks; public class CoroutineExample { public static async Task MyCoroutine() { throw new Exception("Something went wrong!"); } public static async Task Main() { try { await MyCoroutine(); } catch (Exception ex) { Console.WriteLine($"Caught exception: {ex.Message}"); } } }