2013-04-25 110 views
0

我在面試中遇到了自定義異常的問題。如下所示,有四個捕獲每個自定義異常的多個捕獲。採訪者要求我爲catch塊編寫僞代碼,我可以如何處理所有四種自定義異常。C#中自定義異常的Interview_Question

enter image description here

我邊回答

 try 
     { try 
      { 
       try { } 
       catch (DEx dEx) { Console.WriteLine(dEx.Message); } 
      } 
      catch (BEx bEx) { Console.WriteLine(bEx.Message); } 
      catch (CEx cEx) { Console.WriteLine(cEx.Message); } 
     } 
     catch (AEx aEx) { Console.WriteLine(aEx.Message); } 

它是正確的還是錯誤的?

回答

1

CEx和DEx繼承BEx和BEx繼承自AEx。所以異常應該從低到高。基礎異常最後。

try 
    { 
     // statements causing exception 
    } 
    catch(CEx cEx) 
    { 
     // error handling for CEx 
    } 
    catch(DEx dEx) 
    { 
     // error handling for DEx 
    } 
    catch(BEx bEx) 
    { 
     // error handling for BEx 
    } 
    catch(AEx aEx) 
    { 
     // error handling for AEx 
    } 
    finally 
    { 
     // statements to be executed 
    } 
+0

我在採訪回答爲上述問題爲'嘗試 {嘗試 { 嘗試{} 趕上(DEX d){Console.WriteLine(d.Message); }}}}}}}}}}}}} catch(BEx b){Console.WriteLine(b.Message);} catch(CEx c){Console.WriteLine(c.Message);} }}}}}}}}}}}}}}}}}} catch(AEx a){Console.WriteLine(a.Message);} }' – venkat 2013-04-25 04:04:33

+0

DEx和CEx(任何順序)應該在BEx和AEx之前處理。 – CharithJ 2013-04-25 04:05:53

+0

請參閱我更新的問題。我在面試時告訴我的答案 – venkat 2013-04-25 04:08:13