JVM如何检查程序中发生了哪种类型的异常?

时间:2013-12-11 11:07:52

标签: java exception

JVM如何获取有关发生什么类型的异常的信息,然后显示它是什么类型的异常,以及JVM使用哪个线程通知我们。

3 个答案:

答案 0 :(得分:0)

程序员可以使用throw语句抛出异常字节码使用操作码 athrow

  

objectref必须是类型引用,并且必须引用一个对象   这是Throwable类的实例或Throwable的子类的实例。   它从操作数堆栈中弹出。然后抛出objectref   在当前方法(§2.6)中搜索第一个异常处理程序   匹配objectref的类,由算法中给出   §2.10

     

如果找到与objectref匹配的异常处理程序,则它包含   用于处理此异常的代码的位置。电脑   寄存器重置到该位置,即当前的操作数堆栈   帧被清除,objectref被推回到操作数堆栈上,并且   继续执行。

请参阅JLS中的2.10. Exception以更好地理解异常。

答案 1 :(得分:0)

有两种类型的例外:已选中和未选中。

已检查的异常是需要在程序中捕获的异常。它们是“例外”的子类。

未经检查的异常是不需要捕获的异常。它们是“RuntimeException”的子类。

JVM可以抛出OutOfMemoryException或NullPointerExeception之类的RuntimeExceptions。

但是某些框架或者您可以显式抛出异常(已检查或未选中,取决于您的需要)。

答案 2 :(得分:0)

Java Developer定义了一个函数,可以在FileNotFound Exception中的某些条件下抛出Exception。例外的是运行时异常可以在任何地方发生,例如代码。 NPE。

如果捕获了异常,它将不再传播,这意味着您必须处理它。如果你没有捕获Exception,那么它只会传播到它的父调用函数。此过程将一直持续到main()方法。如果连main()都不处理它,JVM就会关闭。

此外,没有单独的报告主题。执行代码的相同主线程负责异常处理。