我打开像Exception
类的NullpointerException
子类,它有构造函数,没有其他方法。 JVM如何知道显示此类异常的情况?
有几个例外,JVM会在特定情况下自动抛出。其中包括NullPointerException或OutOfMemoryError。
因为sun / oracle已经定义了它们的确切目的,所以何时抛出它们的逻辑被编码到JVM本身中。 (例如,如果您的应用程序需要的内存多于可用内存,JVM知道它必须抛出OutOfMemoryError;如果您尝试访问null对象的字段或方法,它知道它必须抛出NullPoinerException)。
这些规则在JVM中明确规定并编纂。
在这种情况下,它们与您为自己创建的任何“自定义”异常不同。显然,JVM不知道它们的语义,也不会自动抛出它们。相反,你必须把它们扔掉。
顺便说一句:如果你想知道,为什么你不需要尝试/捕获块来处理NullPointerException:这是因为它们从RuntimeException继承。根据定义,不需要声明或明确捕获从RuntimeException继承的任何异常。 (你可以明确地声明和捕捉它们,但这是可选的)
希望这有帮助:)马蒂亚斯