当前位置: 首页 > 面试题库 >

未捕获Java异常

柴霖
2023-03-14
问题内容

为什么Java中的某些异常未被捕获catch (Exception ex)?这是代码由于没有处理的异常而完全失败。(Java版本1.4)。

public static void main(String[] args) {
    try {
        //Code ...
    } catch (Exception ex) {
        System.err.println("Caught Exception");
        ex.printStackTrace();
        exitCode = app.FAILURE_EXIT_CODE;
    }
    finally {
        app.shutdown();
    }
    System.exit(exitCode);
}

我得到一个 Exception in thread "main" java.lang.NoSuchMethodError

但这有效

public static void main(String[] args) {
    int exitCode = app.SUCCESS_EXIT_CODE;
    try {
        //Code ...
    } catch (java.lang.NoSuchMethodError mex){
        System.err.println("Caught NoSuchMethodError");
        mex.printStackTrace();
        exitCode = app.FAILURE_EXIT_CODE;
    } catch (Exception ex) {
        System.err.println("Caught Exception");
        ex.printStackTrace();
        exitCode = app.FAILURE_EXIT_CODE;
    }
    finally {
        app.shutdown();
    }
    System.exit(exitCode);
}

我懂了 Caught NoSuchMethodError java.lang.NoSuchMethodError:

我以为捕获异常会捕获所有异常?如何捕获Java中的所有异常?


问题答案:

因为某些异常不是源自Exception-例如ThrowableError

基本上,类型层次结构是:

       Object
         |
      Throwable
     /         \
Exception      Error

只能Throwables抛出派生类,因此,如果您抓住Throwable,那实际上就可以抓住一切。

ThrowableException以及任何异常,从获得Exception 其他 比那些源自RuntimeException数作为
检查的异常 -他们是的,你必须声明你扔了,或者捕捉如果你调用的东西,抛出他们。

总而言之,Java异常层次结构有点混乱……



 类似资料:
  • 为什么Java中的一些异常不被捕获?这是完全失败的代码,有一个未处理的异常。(Java版本1.4)。 我在线程“main”java中得到了一个 但这行得通 我在java中没有发现任何方法错误。lang.NoSuchMethodError: 我以为捕获异常会捕获所有异常?如何捕获java中的所有异常?

  • 我对Java线程、Runnable等相当陌生。因此,我想知道为什么下面的代码没有捕获异常? 阅读有没有一种方法可以使Runnable的run()引发异常,我收集到: "...如果您的run()方法确实是Thread的目标,则抛出异常是没有意义的,因为它是不可观察的;抛出异常与不抛出异常(无)具有相同的效果。"(@erickson) 我应该检查Runnable.run()方法中的异常。 为什么会这样

  • 我的用它的作用域启动coroutine 我的只处理一些逻辑,在本例中是某种验证器 然后我的只处理网络层/本地层 以下是我得到的错误日志: 错误直接指向显式的语句。

  • 我需要应用程序将错误写入位置。有没有我可以用Java异常处理做这件事?我已经在抛接IOerrors了,所以我不知道问题出在哪里……? 我正在从标准输入读取数据,并将其压缩并写入标准输出。 写入/dev/full不是引发异常...有没有关于如何引发异常的想法?

  • Twilio新手使用测试帐户。我按照这里列出的安装Twilio PHP的说明进行了安装:https://www.Twilio.com/docs/quickstart/php/sms 因为我得到了一个证书错误,所以我的主机提供程序建议我更改CURLOPT_SSL_VERIFYPEER=>false(从true改为true)。但现在我得到了这个错误。如何修复?:致命错误:未捕获异常“services_

  • @ControllerAdvice类是RestResponseEntityExceptionHandler.java。 我被告知,默认情况下spring boot应该返回如下所示的内容 我给它的不存在的路径是 我的控制器类是Breweries_Controller