gpt4 book ai didi

c# - 编写一个调用 block 以避免抛出任何异常

转载 作者:行者123 更新时间:2023-12-03 19:22:14 24 4
gpt4 key购买 nike

我有一段特别难看的测试代码,它在硬件设备上调用许多方法来测试它的功能。它需要优雅地失败,因为如果任何方法抛出异常,我不希望其他方法仍然被测试。有没有更优雅的方式来表示调用 block ,我不想在其中生成异常?

 ...
try
{
ExternalDevice.Call1();
}
catch (Exception e)
{}
try
{
ExternalDevice.Call2();
}
catch (Exception e)
{}
try
{
ExternalDevice.Call3();
} catch (Exception e)
{}
//... many more like this
...

谢谢

最佳答案

我不建议这样做,但这里有一个方法:

void Absorb(Action action)
{
try { action(); } catch { };
}

// ....
Absorb(() => ExternalDevice.Call1());
Absorb(() => ExternalDevice.Call2());
Absorb(() => ExternalDevice.Call3());

请注意,通常,您可以使用方法组来实现更简单的语法:

Absorb(ExternalDevice.Call1);
Absorb(ExternalDevice.Call2);
Absorb(ExternalDevice.Call3);

为了让它更短,

void Absorb(params Action[] actions)
{
foreach (var action in actions) try { action(); } catch { };
}

So you can

Absorb(ExternalDevice.Call1, ExternalDevice.Call2, ExternalDevice.Call3);

关于c# - 编写一个调用 block 以避免抛出任何异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7966170/

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