我像Exception
类一样打开NullpointerException
子类,它有构造函数,没有其他方法。 JVM如何知道要显示此类异常的情况?
答案 0 :(得分:5)
在某些情况下,JVM会自动抛出一些异常。其中包括NullPointerException或OutOfMemoryError。
由于sun / oracle已经定义了它们的确切用途,因此何时将它们抛出的逻辑已编码到JVM本身中。 (例如,如果您的应用程序需要的内存超过可用内存,则JVM知道它必须抛出OutOfMemoryError;如果您尝试访问null对象的字段或方法,则它知道它必须抛出NullPoinerException)。
这些规则已在JVM中明确指定和编码。
在这种情况下,它们与您为自己使用而创建的任何“自定义”异常不同。显然,JVM不了解它们的语义,并且永远不会自动抛出它们。相反,您必须自己丢掉它们。
BTW:如果您想知道为什么不为NullPointerException使用try / catch块:这是因为它们继承自RuntimeException。根据定义,从RuntimeException继承的任何异常都无需声明或显式捕获。 (您可以显式声明并捕获它们,但这是可选的)
希望这会有所帮助:) 马赛厄斯