索鸟网

  1. 首页
  2. Java 多个异常共享同一个异常处理器

Java 多个异常共享同一个异常处理器


Java 的异常处理机制,在 Java 7 中有了非常大的改进。其中一个特性就是,支持多个异常共享同一个异常处理器。

传统的异常处理

我们先来看下,传统的异常处理方式:

// not share exception handler
int[] intArray = new int[3];

try {
    for (int i = 0; i <= intArray.length; i++) {
        intArray[i] = i;
        System.out.println("intArray[" + i + "] = " + intArray[i]);
        System.out.println("intArray[" + i + "]模 " + (i - 2) + "的值:  " + intArray[i] % (i - 2));
    }
} catch (ArrayIndexOutOfBoundsException e) {

    // ...省略了大段处理逻辑
    System.out.println("异常信息:" + e);
} catch (ArithmeticException e) {

    // ...省略了大段处理逻辑
    System.out.println("异常信息:" + e);
}

在上面的程序处理中,我们捕获了可能出现的 ArrayIndexOutOfBoundsException 和 ArithmeticException 的异常。

共享同一个异常处理器

为了改进代码,我们使用了 Java 7 中共享同一个异常处理器的方式,代码改成了如下方式:

// share exception handler
intArray = new int[3];

try {
    for (int i = 0; i <= intArray.length; i++) {
        intArray[i] = i;
        System.out.println("intArray[" + i + "] = " + intArray[i]);
        System.out.println("intArray[" + i + "]模 " + (i - 2) + "的值:  " + intArray[i] % (i - 2));
    }
} catch (ArrayIndexOutOfBoundsException | ArithmeticException e) {

    // ...省略了大段处理逻辑
    System.out.println("异常信息:" + e);
}  
System.out.println("程序正常结束。");

在这段程序中,我们看到 ArrayIndexOutOfBoundsException 和 ArithmeticException 异常被放到了同一个异常处理器中进行了处理。这样整体代码看起来更加简洁,并消除了很多的重复代码。要知道,重复是魔鬼。

源码

本例子的源码,可以在 https://github.com/waylau/essential-javacom.waylau.essentialjava.exception 包下找到。

参考文献
相关标签: JAVA

本文原创发布于慕课网 ,转载请注明出处,谢谢合作!

来源地址:http://www.imooc.com/article/19501 版权归作者所有!

相关教程

  • java异常处理

    异常是导致程序中断运行的一种指令流,如果不对异常处理,则可能发生程序中断运行 异常的父类是Throwable,其分为两个子类:1.Exception2.Error。Exception表示程序处理异常,而Error表示JVM错误(java虚拟机错误),此错误无法处理。 1.常见的java异常处理操作 (a) 异常处理格式: try{ //有可能出现异常的语句
  • java:异常处理

    1 为什么要处理异常? 异常机制可以使程序的异常处理代码与正常业务代码分离,保证程序代码的健壮性。在设计程序的时候,好的程序需要尽可能处理已知的可能产生的错误,但是事实上并不可能考虑到所有可能产生异常的情况,同时,众多的类似if-else的错误处理代码可能会带来很多的代码冗杂,错误处理与业务代码混杂的情况,带来阅读和维护的难度。因此我们需要合适的异常处理
  • JAVA笔记--------异常

    JAVA中异常就是指代码在运行过程中出行意料之外的事情。准确的来说,就是阻止当前方法或作用域,称之为异常。 异常都继承于一个Throwable类,这个类主要有两个子类,分别为Error类和Exception类。 1、Error类一般很少接触,一般是虚拟机错误或者是内存溢出。 2、Exception类一般有几个问题:编码、环境、用户操作输入出现问题。 Exception类
  • Java异常处理

    1.异常介绍 “异常”这个词有“我对此感到意外”的意思。问题出现了,你也许不知道该如何处理,但不应该置之不理。应该停下来看看是不是有别人或者是在别的地方能够处理这个问题,只是在当前环境中还没有足够的信息来解决这个问题。 使用异常一个相当明显的好处就是能都降低错误处理代码的复杂度。异常机制使代码的阅读,编写和调试更急井井有条。如果不使用异常,必须进行特定的错误检查,并且要处理它。如果使用
  • java异常处理

    异常的定义 异常发生的原因有很多,比如:用户输入了非法数据,要打开的文件不存在,或者JVM内存溢出等。异常又分为检查性异常,这类异常再编译时不能被忽略;运行时异常,这类异常往往是在编译前无法预料的。 Exception类结构 Exception类和Error继承于Throwable类。所有的异常类是从java.lang.Exception类继承的子类。异
  • Java常见异常

    1. java.lang.nullpointerexception   这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等。对数组操作中出现空指针,很多情况下是一些刚开始学习编程的朋友常犯的错误,即把数组的初始化和数组元素的初始化混淆
  • java异常处理

    简介 所有的异常类是从 java.lang.Exception 类继承的子类。 Exception类是Throwable类的子类,Throwable还有一个子类Error。 java内置异常类 Java 语言定义了一些异常类在 java.lang 标准包中。标准运行时异常类的子类是最常见的异常类。由于 java.lang 包是默认加载到所有的 Java 程序的,所以大部分从运行时
  • java 异常的简单理解(十分钟理解异常)

    异常的出现是很正常的事情,这也可以算是现实的映射,来源于现实。现实中突发情况就很多。但说实话有很少见,不过既然遇到了,怎么办。说到底分为能处理的与不能处理的。 能处理的就自己处理,方法就是try-catch。Try标记可能出现异常的代码,catch注释出现异常的情况。e.printStackTrace();就是控制台输出。 (看这篇文章,最好先不看代码