抛出异常是否必须导致程序终止?
我认为不是,只是想确保一下。
这取决于抛出异常的线程以及应用程序中同时运行的其他线程。
未捕获的异常会终止抛出它的线程。如果其余的线程只是守护线程,那么是的,应用程序将被终止。
根据 Thread.setDaemon(boolean) 文档:
当所有运行的线程都是守护线程时,Java虚拟机将退出。
在Java和.NET中,如果您不处理异常,它很可能会导致程序终止。
仅仅抛出异常并不会使程序终止。决定程序会发生什么取决于抛出异常后发生了什么。
try {
// May Throw ApocalypseException
functionThatMightBlowUpTheWorld();
}
catch (ApocalypseException e){
System.err.println("We accidentally almost blew up the world because: ");
System.err.println(e.message);
}