gpt4 book ai didi

java - 检查和非检查异常;是什么让他们与众不同?

转载 作者:行者123 更新时间:2023-12-01 13:36:21 25 4
gpt4 key购买 nike

我一直在尝试掌握异常的窍门,但遇到了一些问题。我将解释我所知道的内容,并在我不确定的部分添加粗体文本:

我知道有受检查的异常和未经检查的异常(后者都是 RuntimeException 的子类?)。

在可以引发已检查异常的方法中,方法签名需要说明这一点(至少如果我正确理解了我所读到的有关异常的内容?)。
例如:

public void m() throws IOException{
...
}

对于未经检查的异常不需要这样做(不需要,但是可以吗?)

我还知道您可以“尝试”一段代码,并且可能抛出的任何异常都将在“catch”部分(Try-Catch)中捕获。 对于已检查和未检查的异常都必须这样做吗?我什么时候必须这样做?

为了澄清最后一个问题的第二部分,像这样的类

public class A
{
private int[] items;

public int first()
{
return items[0];
}
}

将返回 NullPointerException。但没有 Try-Catch 部分,所以什么时候需要使用 Try-Catch,什么时候不需要?

提前非常感谢!

P.s.我已经在 StackOverflow 上阅读了有关此主题的一些答案,但没有一个答案真正针对我遇到的问题。

最佳答案

关于异常,要了解的最重要的一点是,您不需要捕获它们,至少不需要直接捕获它们发生的地方。异常的这一属性将其与返回值区分开来,并使其成为一种有用的语言功能,可实现错误/异常事件处理通常所需的执行流模式。

Java 中的异常唯一让人分心的地方是受检查的异常,这会导致处理异常的紧迫性。事实上,您也不必处理已检查的异常,但从异常到处理程序的完整调用路径必须使用 throws 声明进行设置。这从非常尴尬到不可能。标准的解决方法是立即捕获已检查的异常,然后抛出另一个未检查的异常,该异常包装原始异常。

关于java - 检查和非检查异常;是什么让他们与众不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21239911/

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