MST

星途 面试题库

面试题:Java中如何为工作者线程设置未捕获异常处理器

在Java中,假设你有一个自定义的线程类`WorkerThread`继承自`Thread`类,要求你为该线程设置一个未捕获异常处理器,简述实现步骤并给出关键代码示例。
44.4万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
  1. 实现步骤
    • 创建一个实现Thread.UncaughtExceptionHandler接口的类,在该类的uncaughtException方法中定义处理未捕获异常的逻辑。
    • WorkerThread类中通过setUncaughtExceptionHandler方法设置这个自定义的未捕获异常处理器。
  2. 关键代码示例
// 自定义未捕获异常处理器类
class MyUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler {
    @Override
    public void uncaughtException(Thread t, Throwable e) {
        System.err.println("线程 " + t.getName() + " 出现未捕获异常: " + e.getMessage());
        e.printStackTrace();
    }
}

// 自定义线程类
class WorkerThread extends Thread {
    public WorkerThread(String name) {
        super(name);
    }

    @Override
    public void run() {
        // 模拟可能抛出异常的代码
        int result = 10 / 0;
    }
}

public class Main {
    public static void main(String[] args) {
        WorkerThread worker = new WorkerThread("MyWorkerThread");
        worker.setUncaughtExceptionHandler(new MyUncaughtExceptionHandler());
        worker.start();
    }
}