异常类定义

use*_*802 2 java exception

ExceptionNullpointerException类一样打开子类,它有构造函数,没有其他方法.JVM如何知道显示此类异常的情况?

Mat*_*tar 5

有几个例外,JVM会在特定情况下自动抛出.其中包括NullPointerException或OutOfMemoryError.

因为sun/oracle已经定义了它们的确切目的,所以何时抛出它们的逻辑被编码到JVM本身中.(例如,如果您的应用程序需要的内存多于可用内存,JVM知道它必须抛出OutOfMemoryError;如果您尝试访问null对象的字段或方法,它知道它必须抛出NullPoinerException).

这些规则在JVM中明确规定并编纂.

在这种情况下,它们与您为自己创建的任何"自定义"异常不同.显然,JVM不知道它们的语义,也永远不会自动抛出它们.相反,你必须把它们扔掉.

顺便说一句:如果你想知道,为什么你不需要尝试/捕获块来处理NullPointerException:这是因为它们从RuntimeException继承.根据定义,不需要声明或明确捕获从RuntimeException继承的任何异常.(你可以明确地声明和捕捉它们,但这是可选的)

希望这有帮助:)马蒂亚斯