36-案例实现
案例实现
根据以下步骤完成本案例。
1.首先,实现一个处理非检查异常的类。该类必须实现 UncaughtExceptionHandler 接口,并实现接口中声明的 uncaughtException() 方法。该接口在 Thread 类的内部定义,在本案例中,我们将处理类命名为 ExceptionHandler ,并创建一个用于输出异常和抛出线程信息的方法,具体代码如下所示:
public class ExceptionHandler implements UncaughtExceptionHandler {
@Override
public void uncaughtException(Thread t, Throwable e) {
System.out.printf("An exception has been captured\n");
System.out.printf("Thread: %s\n",t.getId());
System.out.printf("Exception: %s: %s\n",
e.getClass().getName(),e.getMessage());
System.out.printf("Stack Trace: \n");
e.printStackTrace(System.out);
System.out.printf("Thread status: %s\n",t.getState());
}
}
2.实现用于抛出非检查异常的类 Task ,并实现 Runnable 接口。在覆盖的 run() 方法中构造异常。例如,可以将 String 类型值转换为 int 类型的值:
public class Task implements Runnable {
@Override
public void run() {
int numero=Integer.parseInt("TTT");
}
}
3.实现应用程序入口,创建包含 main() 方法的 Main 类:
public class Main {
public static void main(String[] args) {
4.创建一个 Task 对象,并用 Thread 对象执行该任务。通过 setUncaughtException- Handler() 方法为线程设置非检查异常处理器,并启动执行线程:
Task task=new Task();
Thread thread=new Thread(task);
thread.setUncaughtExceptionHandler(new ExceptionHandler());
thread.start();
}
}
5.运行案例并查看结果。