async-await - 从任务列表中捕获异常
问题描述
我想知道在这样的场景中处理异常的正确方法
---用解决方案更新了代码---
var wt = new List<PendingSettlement>();
var ot = new List<PendingSettlement>();
var otTask = Task.Run(async () => ot = await LoadOtDataAsync().ConfigureAwait(false));
var wtTask = Task.Run(async () => wt = await LoadWtDataAsync().ConfigureAwait(false));
var tasks = new List<Task>
{
otTask, wtTask
};
try
{
await Task.WhenAll(tasks);
}
catch
{
run.WarningMessage = GetInnermostExceptionMessage(wtTask.Exception) + Environment.NewLine + GetInnermostExceptionMessage(otTask.Exception);
string GetInnermostExceptionMessage(Exception e)
{
if (e == null) return string.Empty;
_logger.LogError(e, e.Message);
while (e.InnerException != null) e = e.InnerException;
return e.Message;
}
}
有没有办法确定哪个内部异常对应于哪个任务?
解决方案
存储任务(例如var t1 = Task.Run(...);
)。然后,您可以使用 查询异常t1.Exception
。您可以简单地忽略done.Wait();
从那时起获得的异常。我会通过写作done.ContinueWith(_ => { }).Wait();
来避免投掷和捕捉。
推荐阅读
- installshield - 如何签署可以在任何地方运行的 exe 或 msix 安装程序
- scala - Deciding number of parameter to pass to a method "dynamically"
- amazon-web-services - Commands in .ebextensions fails on ElasticBeanstalk
- javascript - Angular ngmodel ignores value attribute in a form input
- c - C programming : Read numbers in .txt file containing also character
- wordpress - remove category archive titles
- python - Elegant way to import data to a geopandas GeoDataFrame
- javascript - Trying to show popover when my svg icons are hovered .
tag not working - python - Pandas 中的 MS Excel 等累积和
- html - flex 容器中的内容和项目在一个容器/项目中溢出,但在另一个容器/项目中不溢出