投掷和捕捉异常#2

时间:2013-11-04 05:31:56

标签: c# exception-handling catch-block

我有一个控制台应用程序,可以压缩文件,然后通过电子邮件发送。它每小时都这样做。 我想知道我应该处理什么样的例外?假设进程启动时是否没有可用的网络。那我会得到什么例外?而这可能是失败的其他方式。所以基本上我想弄清楚我应该抓住哪些例外。

我有类似的东西

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

}

2 个答案:

答案 0 :(得分:0)

理想情况下,您正在使用的库将附带文档,列出可以抛出的所有类型的异常,否则您将不得不使用像Reflector这样的工具来检查您正在使用的方法找到他们抛出的异常。

例如,SmtpClient.Send方法(此处记录为http://msdn.microsoft.com/en-us/library/swas0fwc.aspx)列出了以下例外情况:

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

请记住按衍生度的降序捕获异常,即在SmtpFailedRecipientsException之前捕获SmtpException,因为SmtpFailedRecipientsException来自SmtpException

答案 1 :(得分:0)

您可以查看MSDN页面,以查看某些方法或构造函数将从.NET库中抛出的异常类型。例如,对于SmtpClient.Send method,它会抛出以下异常:

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

您可能感兴趣的常见异常类型链接位于here