kwc*_*cto 5 c# linq iterator exception-handling
var trimmed = myStringArray.Select(s => s.Substring(0, 10));
Run Code Online (Sandbox Code Playgroud)
如果其中一个字符串长度不是10个字符,我会得到一个ArgumentOutOfRangeException.
在这种情况下,它很容易找到,我知道我可以做到
s.Substring(0, Math.Min(10, s.Length))
Run Code Online (Sandbox Code Playgroud)
对于更复杂的对象构造错误,这并不总是很容易看到.有没有办法通过异常处理来查看哪个字符串不够长?
创建一个方法来执行可以引发异常的复杂转换并从 lambda 调用它。例如 .Select(s => complexMethod(s))
string complexMethod(string s)
{
try
{
...
return ...
}
catch
...
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以在重新抛出之前在 catch 块中记录异常,或者使用 Exception.Data 在重新抛出之前向其中添加信息,或者使用您需要的信息将其包装在自定义异常中。如果不是自定义异常,请记住在重新抛出异常时仅使用“抛出”。
您还可以将方法主体内联到 lambda 中: .Select(s => { ... return ...})
| 归档时间: |
|
| 查看次数: |
638 次 |
| 最近记录: |