在Java 理论上,您只能抛出Throwables
。
语言允许这种情况,并在课程加载期间进行检查。但是如果你禁用了班级检查
java -Xverify:none -cp . BadClassThatCompiles
然后你可以运行一个抛出任何类的类(不是从Throwable
派生的)(Example)
为什么吗
为什么这样设计..意味着允许抛出对象的虚拟机和必须过滤掉错误的代码的验证程序。好像某些代码可能是错误的。这不是代码,而是设计!
为什么?
答案 0 :(得分:4)
为什么这样设计..意味着允许抛出对象的虚拟机和必须过滤掉错误代码的验证器。好像有些代码可能是错的。这不是代码,而是设计!
为什么?
仅仅因为设计几乎可以从所有角度出发。
那么替代方案会是什么?
我猜你必须要有一种特殊的“东西”,这些东西不是为了被抛出而设计的类的实例。
这需要:
在一天结束时,Java语言会更复杂,并且对程序员来说更难使用。到底是什么?略微简化验证者的任务?
很抱歉,但如果按照合乎逻辑的结论,这个想法是不可能的。
坦率地说,如果你可以通过禁用验证程序来破解JVM,关心。它就像抱怨你可以自己射击,如果你玩耍装满手枪。