加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Try,Catch和Finally块

发布时间:2020-12-15 05:19:48 所属栏目:Java 来源:网络整理
导读:public class D {void myMethod() { try { throw new IllegalArgumentException(); } catch (NullPointerException npex) { System.out.println("NullPointerException thrown "); } catch (Exception ex) { System.out.println("Exception thrown "); } fin
public class D {

void myMethod() {
    try {
        throw new IllegalArgumentException();
    } catch (NullPointerException npex) {
        System.out.println("NullPointerException thrown ");
    } catch (Exception ex) {
        System.out.println("Exception thrown ");
    } finally {
        System.out.println("Done with exceptions ");
    }
    System.out.println("myMethod is done");
}

public static void main(String args[]) {
    D d = new D();
    d.myMethod();
}

}

我不明白为什么“myMethod完成”也被打印出来.抛出了异常,因此它假设找到一个匹配的catch并执行finally块,但它继续在myMethod方法上并打印myMethod已完成,这不是finally块的一部分.为什么?

解决方法

这就是try-catch-finally的工作方式.因为您捕获了异常,所以它被认为已被处理,并且执行继续正常进行.

如果你没有抓住它,或者重新抛出它,那么“myMethod就完成了”就不会被打印出来,并且异常会在堆栈中冒出来,直到它被别人抓到.

请注意,finally块始终执行,异常或否.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读