我被问到这个问题,如果主要抛出,JVM会向操作系统抛出异常吗? JVM会停止应用程序执行,但会处理此异常吗?
public static void main(String[] args) throws Exception {
display();
}
public static void display() throws Exception {
throw new RuntimeException();
}
如果出现任何异常,请指定。
答案 0 :(得分:6)
它不是由操作系统处理,而是由JVM本身处理。来自Java language specification §11.3:
如果找不到可以处理异常的catch子句,则终止当前线程(遇到异常的线程)
您的JVM将使用单个线程运行,该线程将被终止。根据{{3}}(强调补充),JVM将自行关闭:
程序会终止其所有活动,并在发生以下两种情况之一时退出:
- 所有非守护程序线程的线程终止。
- 某个线程调用类Runtime或类System的exit方法,安全管理器不禁止退出操作。
任何类型的异常都可能发生这种情况。请注意,就语言规范而言,JLS §12.8。这意味着Error
还会终止线程/ JVM以及从Throwable
继承的任何其他内容,而不仅仅是扩展Exception
的对象。
答案 1 :(得分:0)
Java在JVM中运行,因此所有异常都将在JVM中处理。简单地说,Java异常不会引发操作系统级别。换句话说,您无法在操作系统级别捕获JAVA异常。
希望这能回答你的问题。