如果你在不同的级别捕SettingsFileNotFoundException
(在不同的,调用方法),那么它可能是有意义的创建一个自定义异常,因为您可能需要确定到底是什么错误了。一种过于简单化的例子如下:
void startingMethod()
{
try
{
secondMethod();
thirdMethod();
}
catch (SettingsFileNotFoundException sfnfe)
{
// Handle all SettingsFileNotFoundException issues here.
}
catch (Exception ex)
{
// Handle all other exceptions here.
}
}
void secondMethod()
{
// TODO: secondMethod actions.
var fileName = SomeLogicSpecificToSecondMethodHere();
if (!File.Exists(fileName))
{
throw new SettingsFileNotFoundException("...");
}
}
void thirdMethod()
{
// TODO: thirdMethod actions.
var fileName = SomeOtherLogicSpecificToThirdMethodHere();
if (!File.Exists(fileName))
{
throw new SettingsFileNotFoundException("...");
}
}
在上述例子中,对于多个设置文件的程序搜索,因此具有使用异常多个throw()
语句。嵌套的异常捕获允许所有这些异常以相同的方式处理,而无需在您的两个辅助方法中使用相同的代码。在这里,将您的自定义异常作为不同类型允许以与您的其他错误处理方式不同的方式处理该特定异常。
但是假设你没有做错误处理的这种幻想,你描述的第一种方法更好,因为它是广义的。为什么你会创建一个只能抛出一次的异常?我假设你将变量缓存到变量中,所以你不需要每五秒钟读一次你的文件,这样就可以在应用程序的初始化过程中将新的异常限制为一次。
因此,在您的情况下,除非您很可能将代码扩展为将来使用更复杂的错误处理,否则应该只对FileNotFoundException使用非常特定的消息。
是代码将会捕获的异常,还是您想要控制应用程序崩溃时显示的异常消息? – 2011-04-04 22:25:39