gpt4 book ai didi

java - 为什么 catch block 可以是 Object 类型?

转载 作者:行者123 更新时间:2023-11-29 07:07:03 25 4
gpt4 key购买 nike

我是 JAVA 新手,正在准备我的 OCP JP 认证。

我对异常处理有疑问

try{
assert(false):"HI";
}
catch(Throwable e){}

我知道不应该处理断言,但我使用它只是为了举例。据我所知Object->Throwable ->Exception and Error

如果我在 catch block 中有 Throwable 或 Exception 或 Error 它可以工作,但是当我有对象是所有父类(super class)时,eclipse 会向我显示编译时错误。

为什么我不能在 catch block 中包含对象?

最佳答案

Java 中只能抛出或捕获类型为Throwable 的对象(包括ExceptionError)。

throw new Object(); // compiler error
throw new Integer(1); // compiler error

因此,捕获任何旧的 Object 都是毫无值(value)的,因为只有 Throwable 可以被抛出。

引自JLS, Section 14.20 :

Each class type used in the denotation of the type of an exception parameter must be the class Throwable or a subclass of Throwable, or a compile-time error occurs.

关于java - 为什么 catch block 可以是 Object 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18519502/

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