gpt4 book ai didi

Java:确切的异常类型有多重要

转载 作者:行者123 更新时间:2023-11-29 08:00:05 24 4
gpt4 key购买 nike

(实际上在编程语言中)异常类型的确切类型有多重要?假设我有一本书的章节层次结构,我使用一种方法来访问这些章节。一个是:

public void chapterSearch(int chapter) {
try {
chapterString = this.hierarchy.get(chapter).getText();
} catch(IndexOutOfBoundsException e) {
throw new....
}
}

第二个是这样的:

public void chapterSearch(String chapterString) {
for(int i = 0; i < this.hierarchy.size(); i++) {
if(chapterString.equals(this.hierarchy.get(i).getText())) {
break;
} else if(i == this.hierarchy.size() - 1) {
throw new IllegalArgumentException...
}
}
}

在第一个方法中,很明显会抛出一个新的IndexOutOfBoundsException。但是你可以使用 IllegalArgumentException,根据 javadoc 是

Thrown to indicate that a method has been passed an illegal or inappropriate argument.

这似乎也很适合这种情况。我的意思是,在没有这样的章节编号的情况下传递非常大的章节编号对我来说似乎很不合适。或者,如评论中所述,我可以抛出我自己的新异常 ChapterNotFoundException。但这可能很麻烦,而且我可能不会多次使用此 Exception —— 这样看来使用预先存在的 Exception 似乎更合适。

但总的来说,即使在这种情况下 IndexOutOfBoundsException 仍然是最合适的,或者如果您愿意,ChapterNotFoundException,一般来说异常类型的选择有多重要?

我想创建自己的 Exception 类型在您经常使用它后会很有意义,但如果您不这样做呢?

编辑:一个很好的相关答案是 here,尽管下面的答案也很好。 .

最佳答案

我认为这取决于你想如何处理异常。如果您希望程序失败,然后再深入研究日志,我会投赞成票

throw new IllegalArgumentException("Unexpected chapter: \"" + chapterString + "\"");

如果你想捕获异常并处理它,那么创建一个 ChapterNotFoundException 更有意义。但是,如果您想在代码中处理它,您应该考虑创建一个 boolean 方法来检查章节是否存在,并完全避免处理异常。

关于Java:确切的异常类型有多重要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14931829/

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