使用UncaughtExceptionHandler重启线程 - ImportNew
我们已经知道,Java中有两种异常,即已检测异常和未检测异常。已检测的异常必须在抛出语句(throws clause)的方法中指定或者捕获。未检测的异常不需要指定或捕获。因为run()方法不接受抛出语句,所以当一个检测的异常在一个Thread对象的 run()方法中抛出,我们需要对其进行捕获并做相应的处理。但是当一个未检测的异常在一个线程的run()方法中抛出,默认的行为是将堆栈跟踪信息写到 控制台中(或者记录到错误日志文件中)然后退出程序。
幸运的是,Java为我们提供了一个机制,用来捕获并处理在一个线程对象中抛出的未检测异常,以避免程序终止。我们可以通过UncaughtExceptionHandler来实现这种机制。
让我们来做个UncaughtExceptionHandler的使用 示例。在这个例子中,我们已经创建一个线程,这个线程尝试解析一些本来应该是整数的字符串。我们已经写出run()方法,让它在执行时抛出 java.lang.NumberFormatException。当程序不去捕获异常时,异常经过JVM的同时线程也被杀死。这确实属于正常的行为,但 不是我们希望看到的。
Read full article from 使用UncaughtExceptionHandler重启线程 - ImportNew
No comments:
Post a Comment