未捕获的异常的处理器
假设程序抛出异常时,并没有编写捕获该异常的catch语句块。通常情况下,这么做会导致程序在输出线程的调用堆栈信息后终止。
如果使用Thread类的setDefaultUncaughtedExceptionHandler静态方法,可以设置未捕获的异常的处理器(Uncaught Exception Handler)。该处理器是Thread.UncaughtExceptionHandler接口类型的对象,实际的处理编写在uncaughtException方法中。设置了未捕获的异常的处理器后,程序将不会输出调用堆栈而是直接终止。
退出钩子
退出钩子(Shutdown Hook)是指在Java虚拟机退出时启动的线程。“Java虚拟机退出时”指的是System.exit()被调用或是全部非守护线程终止时。这时可以使用退出钩子来编写程序完全终止时的终止处理。
可以使用java.lang.Runtime类的实例方法addShutdownHook来设置退出钩子。
Main.java
1 | public class Main { |
运行结果
1 | main:BEGIN |