重新抛弃异常未被捕获

时间:2016-04-22 21:57:29

标签: c#

我有一个在后台运行Task的扩展方法,我把它放在try-catch块中来处理它抛出的任何异常。问题是视觉工作室总是停在我的代码的重新抛出部分,我不知道为什么。

try {
    task.RunInBackground();
} catch (Exception e) {
    // do something
}

enter image description here

2 个答案:

答案 0 :(得分:2)

你需要等待这样的任务:

if (service.priorityData[i] === priorityString) {
    logger.info("Priority string", service.priorityData[i].values());
    return service.priorityData[i].values();
} else {
    return null;
}

service.priorityData = {0 : "None", 20: "Low, 80: "High"}

尽可能避免使用async void。将try { await task.RunInBackground(); } catch (Exception e) { // do something } 替换为async void,如下所示,删除async Task

public static async Task RunInBackground(this Task task) {
    // ....
}

如果您需要知道避免异步的原因,请从msdn。

检查此link

答案 1 :(得分:0)

您可以执行以下操作:

SynchronizationContext.SetSynchronizationContext(new SynchronizationContext());
task.RunInBackground().ContinueWith(t =>
{
    throw t.Exception;
},
    CancellationToken.None,
    TaskContinuationOptions.OnlyOnFaulted,
    TaskScheduler.FromCurrentSynchronizationContext()
).ConfigureAwait(false);

在该任务抛出异常之前,此代码不会停止执行任务。