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.运行案例并查看结果。