抛出异常的行为是否有可能改为抛出不同的异常?
为了抛出异常,必须(可选)分配新对象,并调用其构造函数(隐式调用 fillinstacktrace)。在某些情况下,听起来 addSupressed 也被调用了。那么如果内存不够怎么办?JVM 是否需要预先分配内置异常?例如,(1/0) 是否会抛出 OutOfMemoryError 而不是 ArithmeticException?
此外,构造函数是一个方法调用,因此可以自由抛出其他异常。在这种情况下会发生什么?内置异常会抛出吗?即使您没有明确抛出,似乎也有可能获得 StackOverflowError。