MST

星途 面试题库

面试题:Java中如何在普通线程中捕获异常

在Java中,创建一个普通线程并执行任务,任务中可能会抛出异常。请描述如何捕获该线程抛出的异常,并给出相关代码示例。
25.2万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

在Java中,捕获线程抛出的异常可以通过以下两种常见方式:

方式一:在run方法内部捕获异常

class MyTask implements Runnable {
    @Override
    public void run() {
        try {
            // 可能抛出异常的代码
            int result = 10 / 0; 
            System.out.println("计算结果: " + result);
        } catch (ArithmeticException e) {
            System.out.println("捕获到异常: " + e.getMessage());
        }
    }
}

public class Main {
    public static void main(String[] args) {
        Thread thread = new Thread(new MyTask());
        thread.start();
    }
}

方式二:使用UncaughtExceptionHandler

class MyTask implements Runnable {
    @Override
    public void run() {
        // 可能抛出异常的代码
        int result = 10 / 0; 
        System.out.println("计算结果: " + result);
    }
}

public class Main {
    public static void main(String[] args) {
        Thread thread = new Thread(new MyTask());
        thread.setUncaughtExceptionHandler((t, e) -> {
            System.out.println("线程 " + t.getName() + " 抛出异常: " + e.getMessage());
        });
        thread.start();
    }
}

在第一种方式中,直接在run方法内使用try-catch块捕获异常。第二种方式通过设置UncaughtExceptionHandler来处理线程未捕获的异常,这样可以统一管理线程抛出的异常。