lambda 表达式中的异常处理
Exception Handling in lambda Expression
任何人都可以解释一下如何在 lambda expression
中处理异常处理。
我知道在匿名方法中我们可以使用 try catch method
比如
Employee emp = listemp.Find(delegate(Employee employee)
{
try
{
if (number == 5)
throw new InvalidCastException();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
return employee.id == 101;
}
通过将上面的代码转换为 Lambda 表达式,我们有,
Employee e1 = listemp.Find(x => x.id == 101);
我的问题是:我们可以用这个表达式实现try catch吗?
当然可以。 Lambda 表达式只是方法,所以你可以这样写:
listemp.Find(x =>
{
bool found = false;
try
{
found = x.id == 101;
}
catch (Exception ex) { }
return found;
});
注意:我并没有说捕获这样的异常是可以的,这仅用于示例目的。
当然,一旦您的匿名方法被 this 涉及,您可能应该考虑只使用适当的方法。
任何人都可以解释一下如何在 lambda expression
中处理异常处理。
我知道在匿名方法中我们可以使用 try catch method
比如
Employee emp = listemp.Find(delegate(Employee employee)
{
try
{
if (number == 5)
throw new InvalidCastException();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
return employee.id == 101;
}
通过将上面的代码转换为 Lambda 表达式,我们有,
Employee e1 = listemp.Find(x => x.id == 101);
我的问题是:我们可以用这个表达式实现try catch吗?
当然可以。 Lambda 表达式只是方法,所以你可以这样写:
listemp.Find(x =>
{
bool found = false;
try
{
found = x.id == 101;
}
catch (Exception ex) { }
return found;
});
注意:我并没有说捕获这样的异常是可以的,这仅用于示例目的。
当然,一旦您的匿名方法被 this 涉及,您可能应该考虑只使用适当的方法。