本帖最后由 赵兵锋 于 2012-6-10 11:05 编辑
- public static void main(String[] args) {
- try {
- f1();//因为f1在方法声明中已表明可能抛出异常,其内部不会处理掉这个异常,所以在这里需要捕获处理
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- }
- f2();//f2内部捕获了异常,已经处理掉了,所以这里不需要再捕获异常
- }
- public static void f1() throws ClassNotFoundException {//f1方法直接把异常抛出去了,让调用这个方法的方法;来处理
- Class.forName("ss");
- }
- public static void f2() {
- try {
- Class.forName("ss");
- } catch (ClassNotFoundException e) {//f2方法用try-catch捕获了异常,那调用f2的方法不会知道f2可能抛出异常
- e.printStackTrace();
- }
- }
- 对于try和catch什么时候不在同一个方法体,try和catch一定在同一个方法体中,他们是紧密相连的,一一搭配的。虚拟机在方法体中发现try{后,会在此方法体接下来的代码中期待出现}catch (异常){}或是}finally{},若在下一个匹配的}后没有发现catch后finally,就会报错。
复制代码 |