【发布时间】:2011-08-10 15:08:08
【问题描述】:
传统观点认为您只能在 Java 中抛出扩展 Throwable 的对象,但是否可以禁用字节码验证器并让 Java 编译和运行抛出任意对象甚至基元的代码?
我查看了 JVM 的 athrow,它会弹出操作数堆栈上的第一个 objref;但它会在运行时检查所述引用是否指向Throwable?
【问题讨论】:
-
有趣的问题 - 但你为什么希望能够抛出不可投掷的东西? (难道只是为了开bug?)
-
@RonK 主要是出于好奇;我想知道为什么 Java 强迫我们抛出比它们可能更大的占用空间的对象。注意我不打算在实际代码中使用它。
-
@RonK:有效的用例包括设计新的 java 方言或新的 JVM 语言。