Java异常类 - Java面向对象设计™

异常类层次结构

异常类层次结构从java.lang.Throwable类开始。当抛出异常时,它必须是Throwable类的对象或其任何子类。

catch块的参数必须是Throwable类型或其子类,例如:ExceptionArithmeticExceptionIOException等。

可以通过继承一个异常类类来创建自己定义的异常类。

组织排列多个catch块

Java运行时选择适当的catch块,并从第一个catch块开始顺序寻找合适的catch块。
try块的多个catch块必须从最具体的异常类型排列为最通用的异常类型。

以下代码使用多个catch块的有效序列。

ArithmeticException类是RuntimeException类的子类。

如果这两个异常都在同一个try块的catch块中处理,那么最具体的类型,即 ArithmeticException,必须出现在最通用的类型之前,即放在RuntimeException异常类之前。

try  {
// Do  something, which  might  throw  Exception
}
catch(ArithmeticException e1)  {
// Handle  ArithmeticException first
}
catch(RuntimeException e2)  {
// Handle  RuntimeException after  ArithmeticException
}

已检查和未检查异常

有三种类型的异常:

第一种异常分类称为检查异常,因为编译器检查它们是否在代码中有处理了。Throwable类,Exception类和Exception类的子类(不包括RuntimeException类及其子类)称为检查异常。

所有未检查异常的异常称为未检查异常,因为编译器不检查它们是否在代码中有处理。Error类,Error类的所有子类,RuntimeException类及其所有子类都是未检查的异常。

当然也可以处理未检查的异常,但是这不是编译器强迫要求的。用于处理已检查或未检查异常的程序结构是相同的。

以下代码显示如何处理已检查的异常

import java.io.IOException;

public class Main {
  public static void main(String[] argv) {
    try {
      int input = System.in.read();
      if (input != -1) {
        System.out.println(input);
      }
    } catch (IOException e) {
      System.out.print("IOException occurred.");
    }
  }
}

本站代码下载:http://www.yiibai.com/siteinfo/download.html

本文属作者原创,转载请注明出处:易百教程 » Java异常类