异常处理默认catch异常
问题描述:
我有以下代码。只有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);
}
感谢
答
可这段代码可以抛出什么其他异常
你可以看到在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
在这里可能会发生各种各样的例外情况,您选择如何处理它们,但是纯粹是基于观点的。 – DavidG
你可能不应该问一个问题,答案是“是”。你如何处理异常处理? – maniak1982
如果你所做的只是登录异常 - 可以全部捕获它们。但您也可以根据异常类型采取不同的操作。这是不同的异常类型帮助的地方。 – Evk