我们可以在没有捕获块的情况下捕获异常吗?



假设我有一个try - finally块没有 catch 块,我们在 try 块中抛出一个异常。我能抓住那个异常吗?

public static void main(String[] args) throws IOException{
    try {
        throw new IOException("Something went wrong");
    } finally{
    }
}

是的,这是可能的。

您可以使用未捕获的异常处理程序。它的职责是捕获程序未捕获的异常,并对其进行处理。

public static void main(String[] args) throws IOException {
    Thread.setDefaultUncaughtExceptionHandler((thread, thr) -> thr.printStackTrace());
    throw new IOException("Something went wrong");
}

setDefaultUncaughtExceptionHandler 是一种方法,它将注册一个处理程序,当任何线程中引发异常且未被捕获时,将调用该处理程序。上面的代码将打印可抛出处理的堆栈跟踪。

处理程序将发生异常的线程和引发的可抛出对象作为参数。

您还可以通过在 Thread 实例上使用 setUncaughtExceptionHandler 为每个线程设置一个处理程序。此处理程序将处理从此线程引发的所有未捕获的异常。

相关内容

  • 没有找到相关文章

最新更新