异常Exception

异常就是在程序执行过程中发生的、破坏程序正常指令流的事件。当方法中出现错误时,该方法就会创建出一个对象,并把它传给运行时系统,这个对象成为异常对象,它含有错误的相关信息,包括类型和错误发生时程序的状态。创建异常对象,并把其传给运行时系统,成为抛出异常

当一个方法抛出异常后,运行时系统会尝试处理该异常,可能会报错的方法所调用的方法的有序列表,成为调用栈。就是方法的调用层次。

运行时系统按照方法调用的逆序搜索调用栈,找到包含处理异常的代码块的方法,这个代码块成为异常处理函数。这个过程就是捕获异常,如果没有找到适用的异常处理函数,运行时系统终止。

异常是程序中的一些错误。异常发生的原因有很多,通常包含以下几大类:

  • 用户输入了非法数据。
  • 要打开的文件不存在。
  • 网络通信时连接中断,或者JVM内存溢出。

这些异常有的是因为用户错误引起,有的是程序错误引起的,还有其它一些是因为物理错误引起的。

异常还可以分为检查性异常、运行时异常、错误。

Exception类

所有的异常类都是从java.lang.Exception类继承的子类。Exception类是Throwable类的子类。除了Exception类外,Throwable类还有一个子类Error。
Java 程序通常不捕获错误。错误一般发生在严重故障时,它们在Java程序处理的范畴之外。Error 用来指示运行时环境发生的错误。
异常类有两个主要的子类:IOException 类和 RuntimeException 类。

在 Java 内置类中,有大部分常用检查性和非检查性异常。

Java内置异常类在Java语言的java.lang标准包中,由于该包是默认加载到所有的Java程序中的,所以大部分从运行时异常类继承而来的异常都可以直接使用。

下面的表中列出了 Java 的非检查性异常。

下面的表中列出了 Java 定义在 java.lang 包中的检查性异常类。

异常类里面也有一些方法:

捕获异常
try{
    // 程序块
} catch (Exception e1) {
    // catch 块
} catch (Exception e2) {
    // catch 块
} finally {
    // finally 块
}

使用 try 和 catch 关键字可以捕获异常。try/catch 代码块放在异常可能发生的地方。try/catch代码块中的代码称为保护代码。
finally 关键字用来创建在 try 代码块后面执行的代码块。无论是否发生异常,finally 代码块中的代码总会被执行。在 finally 代码块中,可以运行清理类型等收尾善后性质的语句。

import java.io.*;
public class ExcepTest{

   public static void main(String args[]){
      try{
         int a[] = new int[2];
         System.out.println("Access element three :" + a[3]);
      }catch(ArrayIndexOutOfBoundsException e){
         System.out.println("Exception thrown  :" + e);
      }
   }
}

try {
    file = new FileInputStream(fileName);
    x = (byte) file.read();
} catch(FileNotFoundException f) { // Not valid!
    f.printStackTrace();
    return -1;
} catch(IOException i) {
    i.printStackTrace();
    return -1;
}
分类: JAVA SE

0 条评论

发表评论

邮箱地址不会被公开。