gpt4 book ai didi

Java:抛出异常可以抛出异常吗?

转载 作者:行者123 更新时间:2023-12-01 06:46:18 24 4
gpt4 key购买 nike

抛出异常的行为是否有可能抛出不同的异常?

为了引发异常,必须(可选)分配新对象,并调用其构造函数(隐式调用 fillinstacktrace)。在某些情况下,听起来 addSupressed 也被调用。那么如果内存不足会发生什么情况呢? JVM 是否需要预分配内置异常?例如,(1/0) 会抛出 OutOfMemoryError 而不是 ArithmeticException 吗?

此外,构造函数是一个方法调用,因此可以自由抛出其他异常。在这种情况下会发生什么?内置异常会抛出吗?即使您没有显式抛出,似乎也可能会出现 StackOverflowError。

最佳答案

public class MyStupidException extends Exception {
public MyStupidException() {
throw new RuntimeException("whoooo");
}
}
public static void main(String... args) throws Exception {
throw new MyStupidException();
}

打印:

Exception in thread "main" java.lang.RuntimeException: whoooo

所以,是的:-)

在内置异常的情况下,有很多事情可能会出错。我不认为规范要求 JVM 保证异常分配成功,因此 OutOfMemoryError 听起来很有可能。还有可能发生更隐蔽的问题,例如类加载失败。我们还可以深入了解深奥的内容,即有人修改了 java.lang.Exception 来引发异常或错误。

因此,我的观点是,您应该预期/计划,异常处理本身可能会在极少数情况下导致异常。

关于Java:抛出异常可以抛出异常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11939889/

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