异常处理默认捕获异常

时间:2017-03-01 21:10:54

标签: c# exception exception-handling

我有以下代码。只有1个捕获异常可以吗?这段代码可以抛出什么其他异常?。

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

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);

}

由于

1 个答案:

答案 0 :(得分:2)

  

这段代码可以抛出什么其他异常

您可以在function page (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块的顺序很重要。 see here