这个问题在这里已经有了答案:
Unhandled Exception in Java
(2 个回答)
去年关闭。
我在理解 Thread.sleep() 的原因时遇到问题,JVM 捕获了 InterruptedException 错误,而 ThreadExecp.fun() 则不是这种情况。
public class ThreadExecp {
static void fun() throws InterruptedException
{
System.out.println("Inside fun(). ");
throw new InterruptedException ();
}
public static void main(String args[]) throws InterruptedException {
Thread.sleep(10000);
System.out.println("done 1");
ThreadExecp.fun();
System.out.println("Done");
}
}
实际上在 main 方法中发生的错误在哪里被捕获,为什么有些错误可以简单地抛出而有些需要在 try-catch 中捕获?
最佳答案
InterruptedException
在这里任何地方都没有被捕获,它只是沿着调用堆栈传播。并且您的代码中没有任何内容可以捕获和处理它,JVM 没有其他选择,只能处理未处理的异常。
关于java - 抛出 main 函数不会捕获错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63220477/