UncaughtExceptionHandler接口用来捕获运行时未被程序捕获异常.
如下面的例子
for (int i=5;i >=0 ;i--) {
int value = 5 / i;
System.out.println(value);
}
直接在main方法里执行,在console里是不会报错的.
但仔细看一下代码会发现,当i为0时此处代码应该抛ArithmeticException.为何没有,是因为程序中没有任何异常catch.
如果在main方法中加入
Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
public void uncaughtException(Thread t, Throwable e) {
e.printStackTrace();
}} );
再执行会发现console会出现
Exception in thread "main" java.lang.ArithmeticException: / by zero 信息.
在有线程的情况下。对于主线程是无法捕获Thread的异常的。