2013-11-04 241 views
0

我有一個控制檯應用程序,它將文件壓縮後通過電子郵件發送出去。它每小時都這樣做。 我想知道應該處理什麼樣的異常?假設流程開始時沒有可用的網絡。我會得到什麼例外呢?而其他方式可能會失敗。所以基本上我試圖找出我應該捕捉的異常。投擲和捕捉異常#2

我有這樣的事情

try 
{ 
    // zips files and send email 
}  
catch(System.Net.Mail.SmtpException e) 
{ 
    Console.WriteLine(e.toString()); 
} 
catch(exception e) 
{ 

} 

回答

0

理想情況下,你使用會詳細的文檔,將列出所有可能拋出的異常類型,如果沒有,那麼你就必須圖書館使用像Reflector這樣的工具來檢查你正在使用的方法來查找拋出的異常。

例如,SmtpClient.Send方法(如這裏記載http://msdn.microsoft.com/en-us/library/swas0fwc.aspx)列出了這些例外:

  • ArgumentNullException
  • InvalidOperationException異常
  • 的ObjectDisposedException
  • SmtpException
  • SmtpFailedRecipientsException

請記住以引號的降序捕獲異常,即在SmtpException之前捕獲SmtpFailedRecipientsException,因爲SmtpFailedRecipientsException源自SmtpException

+0

請注意,SmtpClient.Send調用者不應該捕獲ArgumentNullException,InvalidOperationException和ObjectDisposedException。當引發這些異常時,這意味着調用者代碼中的錯誤。 – Dennis

+0

謝謝它真的幫助! – user2901683

+0

此外,永遠不要「吞下」例外 - 如果沒有別的,就記錄它們。 – Dai

0

您可以查看MSDN頁面以查看某些方法或構造函數從.NET庫中拋出什麼類型的異常。比如,爲SmtpClient.Send method,它拋出以下異常:

  • ArgumentNullException
  • 出現InvalidOperationException
  • 的ObjectDisposedException
  • SmtpException
  • SmtpFailedRecipientsException

還有常見的異常鏈接你可能感興趣的類型位於here