根据我的一点点 java 知识,程序应该在抛出运行时异常后终止。
但是在我的应用程序中抛出运行时异常后它并没有终止,当我在 linux 上执行它时,我必须使用ctrl+c来终止它,否则它不会终止。
我在 Windows 系统上创建 jar 并将其复制粘贴到 linux 中。
我还在我的应用程序中启用了日志记录。
更新: 我没有发现任何异常没有使用多线程。
根据我的一点点 java 知识,程序应该在抛出运行时异常后终止。
但是在我的应用程序中抛出运行时异常后它并没有终止,当我在 linux 上执行它时,我必须使用ctrl+c来终止它,否则它不会终止。
我在 Windows 系统上创建 jar 并将其复制粘贴到 linux 中。
我还在我的应用程序中启用了日志记录。
更新: 我没有发现任何异常没有使用多线程。
A RuntimeException
(或任何 Exception
or Throwable
)不一定会终止您的应用程序。
如果它被抛出在唯一的非守护线程上并且没有被处理,它只会终止您的应用程序。
这意味着如果另一个非守护线程正在运行或者您捕获了异常,应用程序将不会被终止。
我最近的这个回答总结了发生的事情(特别是关于 a OutOfMemoryError
,但想法是一样的)。