当前位置:嗨网首页>书籍在线阅读

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