gpt4 book ai didi

c# - 这是好习惯吗?

转载 作者:太空宇宙 更新时间:2023-11-03 21:13:41 24 4
gpt4 key购买 nike

我有这个扩展方法,允许我在出现异常时重试操作,典型的用途是尝试写入文件,但由于某种原因我不能,所以我稍后重试......

扩展看起来像:

public static void WithRetry<T>(this Action action, int timeToWait = 500, int timesToRetry = 3) where T : Exception
{
int retryCount = 0;

bool successful = false;

do
{
try
{
action();
successful = true;
}
catch (T)
{
retryCount++;
Thread.Sleep(timeToWait);
if (retryCount == timesToRetry) throw;
}
catch (Exception)
{
throw;
}
} while (retryCount < timesToRetry && !successful);
}

Visual Studio 告诉我,我在第一个 catch block 中吞下了一个异常,这很糟糕吗?

谢谢。

最佳答案

警告正是您要达到的目的。您正在吞下异常 (timesToRetry-1) 次。只有在最后一次尝试时,您才真正抛出异常。在那之前,所有异常都将被吞噬和丢失。因为这是您要实现的行为。抑制消息没有坏处。

但正如@HimBromBeere 所说,删除 catch(Exception) block 。您也可以尝试在每次重试时记录异常,因为您将丢失此数据。如果每次都抛出不同类型的异常怎么办。无法确定。

关于c# - 这是好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35939394/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com