《C#并发编程经典实例》学习笔记—2.8 处理 async Task 方法的异常
程序员文章站
2022-03-12 19:24:47
异常处理一直是所有编程语言不可避免需要考虑的问题,C 的异步方法的异常处理和同步方法并无差别,同样要借助 try catch 语句捕获异常。 首先编写一个抛出异常的方法 常见的 try catch 处理语句。 async Task方法的异常存储在Task对象中,Task有一个Exception属性。 ......
异常处理一直是所有编程语言不可避免需要考虑的问题,c#的异步方法的异常处理和同步方法并无差别,同样要借助 try catch 语句捕获异常。
首先编写一个抛出异常的方法
static async task throwexceptionasync() { await task.delay(timespan.fromseconds(1)); throw new invalidoperationexception("test"); }
常见的 try catch 处理语句。
static async task testasync() { try { await throwexceptionasync(); } catch (invalidoperationexception) { } }
async task方法的异常存储在task对象中,task有一个exception属性。当task对象被await调用时,才会引发异常。
static async task testasync() { // 抛出异常并将其存储在 task 中。 task task = throwexceptionasync(); try { // task 对象被 await 调用,异常在这里再次被引发。 await task; } catch (invalidoperationexception) { // 这里,异常被正确地捕获。 } }