什么是Java中无法访问的catch块?

控件在任何情况下都无法到达的语句块可以称为不可达块。Java不支持无法访问的块。引用Exception类提到的catch块应该并且必须始终是最后一个catch块,因为Exception 是所有异常的超类。当我们保留多个catch块时,catch块的顺序必须从最具体到最一般。即Exception的子类必须先出现,然后再父类。如果我们先保留超类,然后保留子类,则编译器将抛出不可到达的catch块错误。

语法

try {

   //陈述

} catch(Exception e) {

   System.out.println(e);

} catch(NumberFormatException nfe) { //unreachable block. Not supported by Java, leads to an error.   System.out.println(nfe);

}

如果满足以下两个条件,则编译器认为catch子句可到达

  • 在try块中引发的已检查异常可分配给C的参数。

  • 没有先前的catch子句的参数类型等于C或参数类型的超类型

如果满足以下两个条件,则编译器认为catch子句可以达到:

  • catch子句参数类型E不包含任何未经检查的异常。

  • 在try块中引发的所有异常(类型是E的(严格)子类型)都已由先前的catch子句处理。

示例

public class UnreachableBlock{

   public static void main(String[] args) {

      try {

         int i = Integer.parseInt("abc"); //This statement throws NumberFormatException

      } catch(NumberFormatException nfe) {

         System.out.println("This block handles NumberFormatException");

      } catch(Exception e) {

         System.out.println("This block handles all exception types");

      } catch (Throwable t) {

         System.out.println("Throwable is super class of Exception");

      }

   }

}

输出结果

This block handles NumberFormatException

以上是 什么是Java中无法访问的catch块? 的全部内容, 来源链接: utcz.com/z/321983.html

回到顶部