【问题标题】:exception handling default catch Exception异常处理 默认 catch 异常
【发布时间】:2017-03-01 21:10:53
【问题描述】:

我有以下代码。只有 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);

}

谢谢

【问题讨论】:

  • 这里可能会发生各种各样的例外情况,但您选择如何处理它们纯粹是基于意见。
  • 你可能不应该问一个答案是“是”的问题。您希望如何处理异常?
  • 如果您所做的只是记录异常 - 可以全部捕获。但是您也可能会根据异常类型采取不同的操作。这就是不同的异常类型有所帮助的地方。

标签: c# exception exception-handling


【解决方案1】:

这段代码还能抛出什么异常

你可以在function page (MSDN)看到所有可能的异常:

  • 参数异常
  • 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

【讨论】:

    猜你喜欢
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-05
    • 1970-01-01
    • 2018-06-02
    • 2012-05-04
    相关资源
    最近更新 更多