无论内部最终块是什么(几乎)始终执行,那么将代码封装到其中或将其保持未封闭之间的区别是什么?
假设我必须捕获3个不同的异常,所以我写了3个单独的catch块.但我想跳过一个特定异常的finally块.
据我所知,使用内置标志是不可能的.但你能建议如何以优雅的方式解决这个编码问题吗?
当不使用finally时,我必须在try和其他catch块中多次重写相同的代码.
更多信息:最后我让线程睡了一段时间(await Task.Delay(5 * 1000);)但是如果我收到一个,OperationCanceledException那么我不希望最终运行.我希望它能尽快打破.
while (true)
{
try
{
_cts.Token.ThrowIfCancellationRequested();
}
catch (OperationCanceledException)
{
break;
}
catch (CustomException1 e)
{
}
catch (CustomException2 e)
{
}
finally
{
await Task.Delay(5 * 1000);
}
}
Run Code Online (Sandbox Code Playgroud)