阅读量:0
在C#中,异步编程通常使用async
和await
关键字。当在异步方法中发生异常时,可以使用try-catch
语句进行处理。下面是一个简单的示例,展示了如何在异步方法中处理异常:
using System; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { try { await AsyncMethod(); } catch (Exception ex) { Console.WriteLine($"捕获到异常: {ex.Message}"); } } static async Task AsyncMethod() { await Task.Delay(1000); throw new InvalidOperationException("这是一个异常"); } }
在这个示例中,AsyncMethod
是一个异步方法,它使用await Task.Delay(1000)
模拟异步操作。然后,它抛出一个InvalidOperationException
异常。在Main
方法中,我们使用try-catch
语句捕获这个异常,并在控制台上输出异常信息。
需要注意的是,当在异步方法中使用await
关键字时,异常会自动从当前任务中捕获并封装。这意味着你不需要显式地捕获异常,而是可以在调用异步方法的地方使用try-catch
语句捕获封装后的异常。例如:
using System; using System.Threading.Tasks; class Program { static void Main(string[] args) { try { AsyncMethod(); } catch (Exception ex) { Console.WriteLine($"捕获到异常: {ex.Message}"); } } static async Task AsyncMethod() { await Task.Delay(1000); throw new InvalidOperationException("这是一个异常"); } }
在这个示例中,我们直接在Main
方法中调用AsyncMethod
,而没有使用await
关键字。在这种情况下,异常会自动从AsyncMethod
任务中捕获并封装,然后我们可以使用try-catch
语句捕获封装后的异常。