zoukankan      html  css  js  c++  java
  • 关于try catch语句中finally代码块有没有必要的思考

    今天看代码时候突然想到一个问题:finally究竟有没有存在的必要?

    我们在学习异常的时候应该都听过这样一句话:finally块用于释放资源,比如关闭文件,释放连接数据库的句柄……

    但是假如没有finally代码块,在执行完try或者catch代码块后,不仍然会执行下面的代码吗?也就是说,finally只是为了强调一下在当前的代码块中释放资源吗?

    于是我查阅了一些资料,发现finally是有作用的。看下面的代码段:

    try {
        c = a/b;
        return c;
    } catch(ArithmeticException e){
        e.printStackTrace();
      return 0; } System.out.println(
    "三个字");

    假如程序没有抛异常,那么返回c的值,但是控制台不会输出“三个字”。

    但是看下面的代码:

    try {
        c = a/b;
        return c;
    } catch(ArithmeticException e){
        e.printStackTrace();
        return 0;
    } finally {
        System.out.println("三个字");
    }

    假如程序没有抛异常,那么返回c的值,并且控制台会输出“三个字”。

    总结:当finally中没有return语句时,会优先执行try/catch中的非return语句,再执行finally中的语句,最后执行try/catch中的return语句。

  • 相关阅读:
    洛谷P3376 【模板】网络最大流
    bzoj 4598: [Sdoi2016]模式字符串
    JAVA类(下)
    2019DDCTF部分Writeup
    Atom配置(VIM党) · iuunhao
    Tips
    rsync auth failed on module xxx
    基于mykernel完成时间片轮询多道进程的简单内核
    机器学习技法笔记(2)-Linear SVM
    css之制作三角形
  • 原文地址:https://www.cnblogs.com/bwjblogs/p/14650530.html
Copyright © 2011-2022 走看看