在Java中,理论上你只能抛出Throwables。这是语言允许的,并在类加载期间进行检查。但如果禁用类检查,你可以抛出任何类型的异常。
java -Xverify:none -cp . BadClassThatCompiles
然后,您可以运行一个抛出任何类(不是派生自Throwable
)的类(示例)。
为什么?
为什么会设计成这样...意思是一个虚拟机允许抛出对象和一个验证器必须过滤出错误的代码。好像某些代码可能是错误的。它不是代码,而是设计!
为什么?