gpt4 book ai didi

c# - 处理 for-each 循环中项目的异常

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

我想不出自己测试的好方法所以问这个问题:假设我有一个事务列表,我将它们一个一个地发送到 Web 服务,Web 服务调用的结果可能是成功、失败或可能发生了一些奇怪的事情,它只是崩溃了。所以我的整体代码是这样的:

for each (transaction)
{
try
{
string result = webservice.Call(transaction);
if result == "Faild"
{
// log some errors.
}
}
catch (Exception ex)
{
// Log some errors, stack trace, etc...
}
}

所以我的问题是:如果其中一个事务调用出现异常,那么整个事情会停止吗?或者它会跳出异常 block 并继续执行 for-each 中的下一项?

最佳答案

catch 是一个 catch,它将执行 catch 应该执行的操作。

除非您重新抛出异常,否则循环不会中断。

如果你想在告诉用户出现问题之前完成整个循环,你可以这样做像这样:

List<Exception> exceptions = new List<Exception>();
foreach (var transaction in transactions)
{
try
{
string result = webservice.Call(transaction);
if result == "Faild"
{
// log some errors.
}
}
catch (Exception ex)
{
exceptions.Add(ex);
}
}

if (exceptions.Any())
throw new AggregateException(exceptions);

关于c# - 处理 for-each 循环中项目的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24038823/

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