JVM如何获取有关发生什么类型的异常的信息,然后显示它是什么类型的异常,以及JVM使用哪个线程通知我们。
答案 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就会关闭。
此外,没有单独的报告主题。执行代码的相同主线程负责异常处理。