栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Task中捕获异常的最佳方法是什么?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Task中捕获异常的最佳方法是什么?

有两种方法可以执行此操作,具体取决于您所使用的语言版本。

C#5.0以上

您可以使用

async
await
关键字为您简化很多操作。

async
并且
await
被引入该语言以简化使用Task Parallel
Library
的工作,从而避免了您必须使用
ContinueWith
并允许您以自上而下的方式继续编程。

因此,您可以简单地使用

try
/
catch
块来捕获异常,如下所示:

try{    // Start the task.    var task = Task.Factory.StartNew<StateObject>(() => {  });    // Await the task.    await task;}catch (Exception e){    // Perform cleanup here.}

请注意,封装上述内容的方法 必须 使用已

async
应用关键字,这样您才可以使用
await

C#4.0及以下

您可以使用从枚举中获取值的

ContinueWith
重载来处理异常,如下所示:
TaskContinuationOptions

// Get the task.var task = Task.Factory.StartNew<StateObject>(() => {  });// For error handling.task.ContinueWith(t => {  }, context,    TaskContinuationOptions.OnlyOnFaulted);

OnlyOnFaulted
该成员
TaskContinuationOptions
枚举指示应继续 当先行任务抛出异常执行。

当然,您可以有多个调用来

ContinueWith
取消同一先决条件,从而处理非例外情况:

// Get the task.var task = new Task<StateObject>(() => {  });// For error handling.task.ContinueWith(t => {  }, context,     TaskContinuationOptions.OnlyOnFaulted);// If it succeeded.task.ContinueWith(t => {  }, context,    TaskContinuationOptions.OnlyOnRanToCompletion);// Run task.task.Start();


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/568517.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号