使用 Task
在 C# 5.0 及更高版本中,async 和 await 关键字简化基于任务的编程显着。异步方法不依赖于ContinueWith,而是允许您直接使用try/catch块来处理异常:
try { // Start the task. var task = Task.Factory.StartNew<StateObject>(() => { /* action */ }); // Await the task. await task; } catch (Exception e) { // Perform cleanup here. }
对于旧版本的C#, TaskContinuationOptions 枚举的ContinueWith 重载可以是used:
// Get the task. var task = Task.Factory.StartNew<StateObject>(() => { /* action */ }); // For error handling. task.ContinueWith(t => { /* error handling */ }, context, TaskContinuationOptions.OnlyOnFaulted);
OnlyOnFaulted 确保仅当先行任务抛出异常时才执行延续。可以链接多个延续来处理不同的情况:
// For error handling. task.ContinueWith(t => { /* error handling */ }, context, TaskContinuationOptions.OnlyOnFaulted); // If it succeeded. task.ContinueWith(t => { /* on success */ }, context, TaskContinuationOptions.OnlyOnRanToCompletion);
无论您选择 async/await 方法还是使用 TaskContinuationOptions 技术的ContinueWith,这些方法都使您能够有效捕获 C# 任务中的异常,确保您的应用程序处理优雅地出现意外错误。
以上是如何处理C#任务中的异常(Async/Await和ContinueWith)?的详细内容。更多信息请关注PHP中文网其他相关文章!