抛出main的Java Unchecked异常

时间:2012-04-14 06:06:04

标签: java exception-handling

如果我将未经检查的异常从main中抛出,那么该程序始终不会崩溃。我问,因为我正在运行GUI,它目前不会崩溃该程序。它们通常会崩溃还是仅在某些情况下崩溃?同样适用于GUI的检查异常

堆栈溢出在我身上崩溃所以我没有意识到这个问题被发布了两次,我觉得有两份副本是错误的。这是同一个问题。

3 个答案:

答案 0 :(得分:5)

检查未经检查的异常会使主线程崩溃。但是,这并不意味着JVM将退出。没有非守护进程线程正在运行时,JVM退出。如果您正在运行GUI应用程序,那么UI事件循环是一个非守护程序线程,它将使JVM保持运行直到它完成。

答案 1 :(得分:1)

  

如果我将未经检查的异常从main中抛出,那么该程序总是不会崩溃。

在技术意义上,当JVM遇到严重的内部错误并将包含寄存器内容和各种其他模糊内容的故障转储输出到文件中时,会发生崩溃。

当主线程由于未捕获的异常而退出时,这不是崩溃。它(从JVM的角度来看)是有序关闭的。

Chandra的回答解释了JVM关闭是如何发生的,尽管他没有提到调用System.exit()是启动有序关闭的另一种方式。

答案 2 :(得分:0)

使用try-catch(Throwable t)包装main方法中的所有代码。这抓住了一切。

相关问题