繁体   English   中英

异常处理默认catch异常

[英]exception handling default catch Exception

我有以下代码。 可以有1个catch异常吗? 该片段代码还能抛出什么其他异常?

在异常处理中,为什么我们不能只拥有一个异常并记录所有错误?

try {

    if (File.Exists(inputFilename))
    {
        // do something

File.WriteAllText()
    }
   else {
     // do somthing
     }

}

catch (Exception ex)
 {

  _eventLog.WriteEntry(ex.Message + "\r\n" + ex.StackTrace, EventLogEntryType.Error);

}

谢谢

这段代码可以引发什么其他异常

您可以在功能页(MSDN)中看到所有可能的异常:

  • ArgumentException
  • ArgumentNullException
  • PathTooLongException
  • DirectoryNotFoundException
  • 等等

为什么我们不能只有一个异常并记录所有错误

如果您想以不同的方式处理异常,则希望捕获不同类型的异常。 例如:

    try
    {
        if (File.Exists(inputFilename))
        {
            // do something
            File.WriteAllText(path, contents);
        }
        else
        {
            // do somthing
        }
    }
    catch (DirectoryNotFoundException dirNotFoundEx)
    {
        MessageBox.Show("Directory does not exist.Try to use diffrent folder.");
    }
    catch (Exception ex)
    {
        _eventLog.WriteEntry(string.Format("{0}{1}{2}", ex.Message, Environment.NewLine, ex.StackTrace), EventLogEntryType.Error);
    }
}

catch块的顺序很重要。 看这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM