关于线程Start的异常问题

在线程启动后,很可能出现预计外的异常。比如RuntimeException,一般我们在程序中很少捕捉这种异常,但一旦出现,我们很希望在Log文件里能看到异常,这样的分析程序就会方便很多。

在Java中,可以通过setDefaultUncaughtExceptionHandler(UncaughtExceptionHandler e)来实现对未捕捉的异常进行处理。其中UncaughtExceptionHandler的实例必须实现uncaughtException函数。在uncaughtException(Thread t, Throwable e)中实现用异常的处理。

如下程序:

Java
import java.lang.Thread.UncaughtExceptionHandler;

public class UncaughtExceptionTest {

    public static void main(String[] args) {
        Thread tt = new Thread() {
            @Override
            public void start() {
                int[] t = new int[1];
                for (int i = 0; i < 2; i++) {
                    System.out.println(t[i]);
                }
            }
        };

        Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
            @Override
            public void uncaughtException(Thread t, Throwable e) {
                System.out.println(e);
            }
        });

        tt.start();
    }
}

程序结果如下:

0
java.lang.ArrayIndexOutOfBoundsException: 1

转载请注明:宇托的狗窝 » 关于线程Start的异常问题

发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址