2013-04-25 117 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