2015-01-08 137 views
6

任何人都可以請解釋如何處理lambda expression中的異常處理。 我知道匿名方法,我們可以使用try catch method一樣,lambda中的異常處理表達式

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

我的問題是:我們可以實現嘗試捕捉這種表達?

回答

10

當然。 Lambda表達式只是方法,所以你可以寫:

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

注意:我沒有說這是好趕上這樣的異常,這是唯一的樣品的目的。

當然,一旦你的匿名方法是這個涉及,你應該考慮只是使用正確的方法。

+4

儘管一旦你開始用匿名方法編寫完整的try/catch塊,你必須開始想知道是否應該聲明一個「正確」的。 –

+0

@AntP毫無疑問,我會編輯包含它。 – BradleyDotNET