2017-03-01 107 views
0

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

} 

感谢

+2

在这里可能会发生各种各样的例外情况,您选择如何处理它们,但是纯粹是基于观点的。 – DavidG

+0

你可能不应该问一个问题,答案是“是”。你如何处理异常处理? – maniak1982

+0

如果你所做的只是登录异常 - 可以全部捕获它们。但您也可以根据异常类型采取不同的操作。这是不同的异常类型帮助的地方。 – Evk

回答

2

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

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

  • 的ArgumentException
  • 变元tNullException
  • 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