而Exception是程序可以处理的异常。它又分为两种CheckedException(受捡异常),一种是UncheckedException(不受检异常)。其中CheckException发生在编译阶段,必须要使用try…catch(或者throws)否则编译不通过。而UncheckedException发生在运行期,具有不确定性,主要是由于程序的逻辑问题所引起的,难以排查,我们一般都需要纵观全局才能够发现这类的异常错误,所以在程序设计中我们需要认真考虑,好好写代码,尽量处理异常,即使产生了异常,也能尽量保证程序朝着有利方向发展。
  所以:对于可恢复的条件使用被检查的异常(CheckedException),对于程序错误(言外之意不可恢复,大错已经酿成)使用运行时异常(RuntimeException)。
  java的异常类实在是太多了,产生的原因也千变万化,所以下篇博文我将会整理,统计java中经常出现的异常,望各位关注!!
  四、异常使用
  在网上看了这样一个搞笑的话:世界上真情的相依,是你在try我在catch。无论你发神马脾气,我都默默承受,静静处理。对于初学者来说异常是try…catch,(鄙人刚刚接触时也是这么认为的,碰到异常是try…catch)。个人感觉try…catch确实是用的多也是实用的。
  在异常中try快包含着可能出现异常的代码块,catch块捕获异常后对异常进行处理。先看如下实例:
public class ExceptionTest {
public static void main(String[] args) {
String file = "D:\exceptionTest.txt";
FileReader reader;
try {
reader = new FileReader(file);
Scanner in = new Scanner(reader);
String string = in.next();
System.out.println(string + "不知道我有幸能够执行到不.....");
} catch (FileNotFoundException e) {
e.printStackTrace();
System.out.println("对不起,你执行不到...");
}
finally{
System.out.println("finally 在执行...");
}
}
}
  这是段非常简单的程序,用于读取D盘目录下的exceptionText.txt文件,同时读取其中的内容、输出。首先D盘没有该文件,运行程序结果如下:
  java.io.FileNotFoundException: D:exceptionTest.txt (系统找不到指定的文件。)
  at java.io.FileInputStream.open(Native Method)
  at java.io.FileInputStream.<init>(FileInputStream.java:106)
  at java.io.FileInputStream.<init>(FileInputStream.java:66)
  at java.io.FileReader.<init>(FileReader.java:41)
  at com.test9.ExceptionTest.main(ExceptionTest.java:19)
  对不起,你执行不到...
  finally 在执行...
  从这个结果我们可以看出这些:
  1、当程序遇到异常时会终止程序的运行(即后面的代码不在执行),控制权交由异常处理机制处理。
  2、catch捕捉异常后,执行里面的函数。
  当我们在D盘目录下新建一个exceptionTest.txt文件后,运行程序结果如下:
  1111不知道我有幸能够执行到不.....
  finally 在执行...
  11111是该文件中的内容。从这个运行结果可以得出这个结果:不论程序是否发生异常,finally代码块总是会执行。所以finally一般用来关闭资源。
  在这里我们在看如下程序:
  public class ExceptionTest {
  public static void main(String[] args) {
  int[] a = {1,2,3,4};
  System.out.println(a[4]);
  System.out.println("我执行了吗???");
  }
  }
  程序运行结果:
  Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
  at com.test9.ExceptionTest.main(ExceptionTest.java:14)
  各位请注意这个异常信息和上面的异常信息错误,为了看得更加清楚,我将他们列在一起:
  java.io.FileNotFoundException: D:exceptionTest.txt (系统找不到指定的文件。)
  Exception in thread "main" <strong>java.lang.ArrayIndexOutOfBoundsException:</strong> 4
  在这里我们发现两个异常之间存在如下区别:第二个异常信息多了Exception in thread ”main”,这显示了出现异常信息的位置。在这里可以得到如下结论:若程序中显示的声明了某个异常,则抛出异常时不会显示出处,若程序中没有显示的声明某个异常,当抛出异常时,系统会显示异常的出处。
  由于这篇博文会比较长,所以分两篇来介绍。下篇博文主要介绍Java异常的自定义异常、异常链、异常的使用误区、使用异常注意地方以及try…catch、throw、throws。望各位看客关注!!!!