gpt4 book ai didi

java - 为什么异常类型会影响编译和不编译的内容?

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

我有两个版本的代码。在 Method() 中引发的异常类型的第一个版本中 - NullPointerException,在第二个版本中 - Exception。但是,第一个版本可以编译,但第二个版本无法编译。为什么会出现这种情况?

public class Demo
{
static void Method()
{
try
{
throw new NullPointerException("error");
}
catch(Exception ex)
{
throw ex;
}
}
public static void main(String argv[])
{
try
{
Method();
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}

这是第二个版本。

public class Demo
{
static void Method()
{
try
{
throw new Exception("error");
}
catch(Exception ex)
{
throw ex;
}
}
public static void main(String argv[])
{
try
{
Method();
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}

第一个版本的堆栈跟踪:

java.lang.NullPointerException: error
at Demo.Method(Demo.java:7)
at Demo.main(Demo.java:18)

最佳答案

这是因为 NullPointerException 是所谓的“未经检查”异常。您不需要在 throws 子句中声明它们。

但是,偶然的异常不会未经检查,并且您确实需要在抛出声明中进行声明。您需要在第二个代码片段中使 Method() 抛出 Exception

未经检查的异常是RuntimeExceptionError和派生类。 NullPointerException 派生自 RuntimeException

关于java - 为什么异常类型会影响编译和不编译的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8617832/

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