日期:2014-05-20  浏览次数:20696 次

问一个关于异常Exception的问题?
如题:
我想知道为什么我们使用try{}catch{} 都直接使用它的子类
如String[] str="123,234,123,2".split(",");
try {
String s=str[6];
} catch (ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
}
为什么 我们不直接写它的父类。
String[] str="123,234,123,2".split(",");
try {
String s=str[6];
} catch (Exception e) {
e.printStackTrace();
}
有人说,上面的会打印出java.lang.ArrayIndexOutOfBoundsException
但是,我试过了 两种方法都是打印的java.lang.ArrayIndexOutOfBoundsException

问问各位大侠 上面时候用第一种情况,上面时候用第二种情况,区别是什么?

------解决方案--------------------
当你需要针对不同的异常做不同处理的时候,必须用具体的异常类捕获。
------解决方案--------------------
如果你的try程序块里面只可能出现一种异常,那么用子类或父类都没关系
如果你的try程序块里面可能出现多种异常, 比如ClassCaseException 和 FileNotFoundException两种异常。 那么为了区分,就要用不同的catch分别为不同的异常做出相应的处理。
------解决方案--------------------
不同的异常捕捉是为了让你更加清楚地区分异常,便于后期维护。这就好比有了object类型为什么还需要 String ,int ,double ,boolean 类型一样,每个异常都有它自己的用途,关键看我们用的是否到位~~