You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何处理filePaths为空场景:避免函数崩溃并直接返回空任务

处理filePaths为空时的GetData()逻辑

这是个很常见的异步任务处理场景,咱们直接调整你的GetData()函数逻辑就能解决问题——核心思路是在路径为空时直接返回无结果的已完成任务,既避免崩溃,又不影响后续的自动重试。

修改后的代码如下:

public async Task<Data[]> GetData() 
{ 
    var filePaths = GetPathsContainingData(); 

    // 先判断路径集合是否为空,为空直接返回空数组的已完成任务
    if (filePaths == null || !filePaths.Any())
    {
        // 可选:这里可以加日志记录,方便排查无路径的情况
        // _logger.LogWarning("No data file paths found, returning empty result for this cycle.");
        return await Task.FromResult(Array.Empty<Data>()).ConfigureAwait(false);
    }

    var tasks = filePaths 
        .Select(f => _ReadAndParseFromPaths(f)) 
        .ToArray(); 

    return await Task.WhenAll(tasks).ConfigureAwait(false); 
}

为什么这么改?

  • 当filePaths为空(甚至为null)时,我们直接用Task.FromResult(Array.Empty<Data>())返回一个已完成的、符合返回类型的任务,跳过后续的文件读取解析操作,从根源上避免空集合可能引发的崩溃。
  • 因为你的Main()方法每分钟都会调用一次GetData(),本次返回空结果后,下一分钟会自动触发重试,完全符合你“之后再进行重试”的需求。

额外优化小建议

  1. 日志辅助排查:在空路径分支里添加日志记录,能帮你快速定位无路径的发生时机,判断是文件未创建、发布延迟还是其他问题导致的。
  2. 空值防护:增加filePaths == null的判断,避免GetPathsContainingData()返回null时触发NullReferenceException。

内容的提问来源于stack exchange,提问作者ghost media

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:15:59