gpt4 book ai didi

c# - LINQ 迭代器异常处理

转载 作者:太空狗 更新时间:2023-10-29 23:42:26 24 4
gpt4 key购买 nike

var trimmed = myStringArray.Select(s => s.Substring(0, 10));

如果其中一个字符串的长度不是 10 个字符,我会得到一个 ArgumentOutOfRangeException。

在这种情况下,找出答案相当简单,我知道我能做到

s.Substring(0, Math.Min(10, s.Length))

但是对于更复杂的对象构造错误,并不总是很容易看到。有没有办法通过异常处理来查看哪个字符串不够长?

最佳答案

创建一个方法来执行可以抛出异常的复杂转换并从 lambda 调用它。例如.Select(s => complexMethod(s))

string complexMethod(string s)
{
try
{
...
return ...
}
catch
...
}

现在您可以在重新抛出之前在 catch block 中记录异常,或者在重新抛出之前使用 Exception.Data 向其添加信息,或者将其包装在包含您需要的信息的自定义异常中。如果不是自定义异常,请记住在重新抛出时仅使用“抛出”。

您还可以将方法主体内嵌在 lambda 中:.Select(s => { ... return ...})

关于c# - LINQ 迭代器异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2419686/

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