2015-01-08 14 views
6

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; 
} 

を使用することができます知っている、

Employee e1 = listemp.Find(x => x.id == 101); 

私の質問は:私たちは、この式でトライキャッチを実装することはできますか?

答えて

10

ラムダ式がちょうど方法ですので、あなたが書くことができます。

listemp.Find(x => 
{ 
    bool found = false; 
    try 
    { 
     found = x.id == 101; 
    } 
    catch (Exception ex) { } 
    return found; 
}); 

:私はそのような例外をキャッチするためにOKだったと言うしませんでした、これはサンプルのみを目的としています。

もちろん、あなたの匿名の方法がである場合は、このが関係していますが、とにかく適切な方法を使用することを検討しているはずです。

+4

匿名メソッドで本格的なtry/catchブロックを書き始めると、「適切な」宣言が必要なのか疑問に思うかもしれませんが、 –

+0

@AntPそれについて質問はありません、私はそれを含めるように編集します。 – BradleyDotNET