双重检查异常和try-catch逻辑

时间:2014-04-06 19:32:04

标签: java exception logic try-catch

所以刚开始这个单元,并在我的书中回答了几个问题。我的答案是否能够正确理解异常和try-catch块?在开始使用try-catch块/例外之前,我想要验证这一点:)

  1. 哪些类(及其子类)是未经检查的异常的示例?

    答案:IOExceptions,ClassNotFoundException,RuntimeException(其子类:ArithmeticException,NullPointerException,IndexOutOfBoundsException,IllegalArgumentException

  2. 程序员可以通过两种不同的方式处理已检查的异常以避免编译

    答案:使用try-catch块或预先在方法标题中声明异常。

  3. 描述在当前方法中未捕获异常时发生的步骤

    答案:如果当前方法未捕获到异常,则Java退出此方法,将异常传递给调用该方法的方法,并继续执行相同的过程以查找处理程序。如果在被调用的方法链中找不到处理程序,则程序终止并在控制台上输出错误消息。 (找到'处理程序'的过程称为捕获和异常。

  4. “链式异常”与已重新引发的异常有何不同?

    答案:当处理程序无法处理异常或只是想让其调用者收到异常通知时,会发生重新抛出异常。链式异常是指抛出异常以及另一个异常。重新抛出异常的语法:throw ex(ex = object reference)链式异常的语法:throw new Exception(“message ...”,ex);

2 个答案:

答案 0 :(得分:1)

IOException和ClassNotFoundException是CHECKED异常。仅取消选中RuntimeException及其派生类。

答案 1 :(得分:0)

  1. IOException和ClassNotFoungException是“已检查”的异常。查看文档以检索整个列表。 (Checked Exceptions包括“ Exception ”类及其子类,除了“RuntimeException”及其子类,它们形成“ Uncheck Exception ”组。{{3} }

  2. try-catch块或try-with-resources并将异常传播给其调用者。 Quick List

  3. 该过程称为传播,如果未找到处理程序,则运行的线程将终止(打印到控制台的消息称为“堆栈跟踪”)。只有当异常从唯一一个活动的剩余非deamon线程传播(没有找到任何处理程序)时,程序本身才会终止try-with-resources | Thread types