gpt4 book ai didi

exception - 自定义异常与带有非常描述性消息的内置异常

转载 作者:行者123 更新时间:2023-12-01 02:50:05 24 4
gpt4 key购买 nike

我今天遇到了一个有趣的情况:我有一个带有设置文件的小应用程序,该文件在文档中有详细说明,但如果该文件不存在,那会更好:抛出一个 filenotfoundexception 并给出一个非常令人沮丧的消息设置文件不可用,或创建一个名为 SettingsFileNotFoundException 的自定义异常(已经,缺点是这样做的工作,即使需要 10 分钟)。这将立即放弃,这是什么问题。

第一种方法(标准异常 + 消息)的问题在于,在团队环境中,它只有在严格遵循程序的情况下才能起作用。

虽然我对这里的语言细节并不真正感兴趣,但语言是 C#。

哪个会更好?

谢谢

最佳答案

如果你在捕捉 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 上使用非常具体的消息。

关于exception - 自定义异常与带有非常描述性消息的内置异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5545002/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com