2015-08-09 34 views
0

我是新的C#,
目前,我正在學習有關的異常&異常處理時碰到這個聲明是:「避免通過捕獲非特定的例外來避免錯誤」意味着什麼?

避免處理通過捕捉非特異性異常,例如System.Exception的錯誤,系統.SystemException等等,在應用程序代碼中。有些情況下,處理應用程序中的錯誤是可以接受的,但這種情況很少見。

我只是不明白。你能解釋一下這是什麼意思? 我在考慮處理所有的異常將是一個好的做法,因爲它使程序在不可預知的情況下更穩定。

MSDN Exception and Exception Handling

回答

3

System.Exception是基類,從.NET繼承所有異常。通常情況下,當你使用catch (Exception e)時,你正在執行一般的catch-all-exceptions類catch,而不是處理實際的特定異常。例如,如果您從可能會拋出WebException的方法執行HTTP請求,那麼捕獲WebException並處理該錯誤是您應該執行的操作。

作者的意思是,通常當你捕捉到特定的異常時,你實際上想要處理來自該請求的錯誤。例如,這可能意味着在處理故障網絡連接時捕獲WebException並實施重試機制。

這意味着做:

public void DoRequest() 
{ 
    try 
    { 
     var address = File.ReadAllLines(@"C:\text.txt"); 
     var client = new WebClient(); 
     var result = client.DownloadString(address); 
    } 
    catch (WebException e) 
    { 
     // Handle the specific case 
    } 
    catch (IOException ie) 
    { 
    } 
} 

相反的:

public void DoRequest() 
{ 
    try 
    { 
     var address = File.ReadAllLines(@"C:\text.txt"); 
     var client = new WebClient(); 
     var result = client.DownloadString(address); 
    } 
    catch (Exception e) 
    { 
     // Do something 
    } 
} 
+1

謝謝!以前從未了解過它。 – Sam