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
}
}
謝謝!以前從未了解過它。 – Sam