精华内容
下载资源
问答
  • finally

    2021-04-12 20:58:01
    finally finally一定会执行吗 不会 在执行try之前直接return 执行try之前程序报错 try中执行System.exit(0); 执行时机 finally块执行在try的return之前 finally块执行在catch的return之前 finally的返回值 ...

    finally

    finally一定会执行吗

    不会

    • 在执行try之前直接return
    • 执行try之前程序报错
    • try中执行System.exit(0);

    执行时机

    • finally块执行在try的return之前
    • finally块执行在catch的return之前

    finally的返回值

    Java程序会把try或者catch块中的返回值保留,也就是暂时的确认了返回值,然后再去执行finally代码块中的语句。等到finally代码块执行完毕后,如果finally块中没有返回值的话,就把之前保留的返回值返回出去。

    在finally块中进行return操作的话,则方法整体的返回值就是finally块中的return返回值。如果在finally块之后的方法内return,则return的值就是进行完上面的操作后的return值。

    展开全文
  • Finally

    2008-05-09 08:15:00
    Finally, I got the opportunity. Shanghai, a big, flourish city, how should I express my feeling. Thank you, all people who support me and help me. I will work hard......
      Finally, I got the opportunity. Shanghai, a big, flourish city, how should I express my feeling.
      Thank you, all people who support me and help me.

       I will work hard......
    展开全文
  • finally+finally执行时机

    2021-01-11 09:18:17
    文章目录finally的特点finally的执行顺序try中有return:try/catch中有return语句:finally块中的返回值1.finally块不含返回值,但是可以改变变量值2.finally中含有返回值示例1:示例2:示例3:Try/catch finally ...


    前两天看了篇文档,里面讲解了finally的执行情况和返回值的情况。讲的还挺细致,既回忆复习了一下基础也新学到了一些之前没有注意的知识点,稍作整理,分享给大家。

    finally的特点

    被finally控制的语句体一定会执行(这是我们平时的认知)

    But 请注意

    finally不会被执行的几种情况:

    在try前制造一个异常(或直接return) 不走进try里面 finally自然也就不会执行了

    特殊情况在执行到finally之前jvm退出了(比如System.exit(0)–这是退出java虚拟机)

    进了try finally都会执行 只要你不这样System.exit(0)

    这是finally的特点,这些其实一般也都记得住,正常 都知道try或catch执行后 就会执行finally中的语句,但是如果try中有return catch里面有return,finally的执行顺序呢?还有如果try/catch/finally都有return 那最后到底return的是那个值呢?(以前关注这个问题 是在牛客网上刷题遇到的)

    finally的执行顺序

    try中有return:

    public class TryCatchTest {
    
      private static int total() {
        try {
          System.out.println("执行try");
          return 11;
        } finally {
          System.out.println("执行finally");
        }
      }
    
      public static void main(String[] args) {
        System.out.println("执行main:" + total());
      }
    }
    
    

    输出结果:
    执行try
    执行finally
    执行main:11

    结论:finally块执行在try块的return之前

    try/catch中有return语句:

    public class TryCatchTest {
    
      private static int total() {
        try {
          System.out.println("执行try");
          return 1 / 0;
        } catch (Exception e) {
          System.out.println("执行catch");
          return 11;
        } finally {
          System.out.println("执行finally");
        }
      }
    
      public static void main(String[] args) {
        System.out.println("执行main:" + total());
      }
    }
    
    

    输出结果:
    执行try
    执行catch
    执行finally
    执行main:11

    同样的,finally执行在catch块return的执行前

    结论:finally在try/catch后执行,如果try/catch中有return语句,finally在return前执行

    finally块中的返回值

    1.finally块不含返回值,但是可以改变变量值

    看一个例子:

    public class TryCatchTest {
    
      private static int total() {
        int i = 0;
        try {
          System.out.println("执行try:" + i);
          return i;
        } finally {
          ++i;
          System.out.println("执行finally:" + i);
        }
      }
    
      public static void main(String[] args) {
        System.out.println("执行main:" + total());
      }
    }
    
    //输出结果:
    //执行try:0
    //执行finally:1
    //执行main:0
    

    我们经过前面的分析,finally块的执行时机应该是return之前,那理论上我们应该先++i使得i等于1,在执行return i; 自然会返回1。

    可是结果却返回了0,这是因为Java程序会把try或者catch块中的返回值保留,也就是暂时的确认了返回值,然后再去执行finally代码块中的语句。等到finally代码块执行完毕后,如果finally块中没有返回值的话,就把之前保留的返回值返回出去。

    2.finally中含有返回值

    示例1:

    public class TryCatchTest {
    
      private static int total() {
        try {
          System.out.println("执行try");
          return 1;
        } finally {
          System.out.println("执行finally");
          return 2;
        }
      }
    
      public static void main(String[] args) {
        System.out.println("执行main:" + total());
      }
    }
    //输出结果:
    //执行try
    //执行finally
    //执行main:2
    

    结论:finally 中有 return 语句,这个返回值将会覆盖前面(try/catch)中的返回值

    示例2:

    public class TryCatchTest {
    
      private static int total() {
        int i = 1;
        try {
          System.out.println("执行try:" + i);
          return i;
        } finally {
          ++i;
          System.out.println("执行finally:" + i);
          return i;
        }
      }
    
      public static void main(String[] args) {
        System.out.println("执行main:" + total());
      }
    }
    //输出结果:
    //执行try:1
    //执行finally:2
    //执行main:2
    

    结论:finally中的return 在try/catch中的return执行后 再执行,所以finally中有 return语句,这个返回值将会覆盖前面(try/catch)中的返回值

    示例3:

    public class TryCatchTest {
    
      private static int total() {
        int i = 1;
        try {
          System.out.println("执行try:" + i);
        } finally {
          ++i;
          System.out.println("执行finally:" + i);
        }
        return i;
      }
    
      public static void main(String[] args) {
        System.out.println("执行main:" + total());
      }
    }
    //执行结果:
    //执行try:1
    //执行finally:2
    //执行main:2
    

    finally块之后的方法有return,则return的值就是进行完上面的操作后的return值。

    Try/catch finally 关于return问题

    try/catch中有return语句, finally里中的代码会在return前执行finally里面的代码

    try/catch中有return语句,finally 中的return 在try/catch中的return语句执行后再执行,finally 中的return 语句,这个返回值将会覆盖try/catch中的返回值。

    finally块之后的方法有return,则return的值就是进行完上面的操作后的return值。

    最后

    凡心所向,素履以往,生如逆旅,一苇以航。送给你,也送给我,送给所有努力的人。

    一直向着东方走,收获的那一刻,真的很美。

    展开全文
  • final、finallyfinally

    千次阅读 2019-09-21 15:49:39
    final final意思是不可变的。 final修饰的类不可被继承,可继承于其他类。(八大基本类型和String都是final类) ...finally是配合try-catch-finally这样的结构使用的,如果有语句在try代码块中执行,f...

    final

    final意思是不可变的。

    • final修饰的类不可被继承,可继承于其他类。类里的属性是可以更改的。(八大基本类型和String都是final类)
    • final修饰的方法是不可以被重写的。
    • final修饰的成员变量,如果是基本类型则不可更改,如果是引用类型则是不可改变引用变量指向的地址。

    finally

    finally是配合try-catch-finally这样的结构使用的,如果有语句在try代码块中执行,finally代码块的语句是一定会执行的,同时finally中的return的执行级别最高。(前提:不要退出主线程、系统)

    finalize

    在对象gc(垃圾回收)时,会调用该方法。

    展开全文
  • 语法finally块的语法是:finally {// Code for finally block}finally块以关键字finally开始,后面紧跟一个大括号和一个大括号。finally块的代码放在大括号内。try,catch和finally块有两种可能的组合:try-catch-...
  • axios finally

    千次阅读 2019-06-04 09:07:31
    HTTP请求库使用axios,Promise对象有一个finally...先安装promise.prototype.finally包 npm install promise.prototype.finally --save 然后在vue项目中需要用到finally的文件中引入 import promiseFinally from 'pr...
  • finally子句

    2019-10-08 13:00:54
    #Python中的finally子句需要和try子句一起使用,组成try/finally的语句形式,try/finally语句无论发生异常与否都将执行最后的代码。 #示例如下: 1 #!/usr/bin/python3 2 #-*-coding:UTF-8-*- 3 #异常...
  • 只有与 finally 相对应的 try 语句块得到执行的情况下,finally 语句块才会执行当finally 相对应的 try 语句块之前,已经抛出错误,或者已经返回,return,就不会执行finally2.当与 finally 相对应的 try 语句块中有...
  • python Finally

    2019-04-07 15:13:24
    try块中包含break、continue或者return语句的,在离开try块之前,finally中的语句也会被执行。Try和finally中都有返回值,在try块return之前,会执行finally中的语句,try中的return被忽略,最终返回值是finally中的...
  • finally子句是无论异常是否发生,是否捕捉都会执行的一段代码。 下面是try-except-else-finally语法的示例: try:  A except MyException:  B else:  C finally:  D 上面语法都可以有不止一个的...
  • Java中final、finally和finalize的区别

    万次阅读 多人点赞 2017-03-28 20:00:13
    final、finally、finalize的区别 1、final修饰符(关键字)。被final修饰的类,就意味着不能再派生出新的子类,不能作为父类而被子类继承。因此一个类不能既被abstract声明,又被final声明。将变量或方法声明为...
  • finally关键字

    2019-07-15 15:47:14
    finally关键字。异常处理的出口,不管有没有异常finally语句块都会被执行。用在资源的释放上。 finally和final的区别? (1)finally用于异常处理的。表示异常的一个出口,主要用于资源的释放。 (2)final表示最终的,...
  • finally代码块一定会执行吗?

    万次阅读 多人点赞 2017-11-06 10:56:19
    深度解析Finally 一、首先在大家的印象中,无论程序是否出现异常,Finally代码块是一定会执行的。这个观点可能会让大家有些失望了,答案是否定的。接下来就让我来详细的给大家讲解一下吧。 案例1: package ...
  • Java finally

    2019-06-16 21:49:58
    当异常被抛出,通常方法的执行将作一个陡峭的非线性的转向。...finally关键字为处理这种意外而设计。 finally创建一个代码块。该代码块在一个try/catch 块完成之后另一个try/catch出现之前执行。finally...
  • finally

    2017-03-15 17:46:31
    finally块: finally块的使用前提是必须要存在try块才能使用。 finally块的代码在任何情况下都会执行,除了jvm退出的情况。 finally块非常适合做资源释放的工作。 /*** Author:Liu Zhiyong* Version:Version...
  • Python finally

    2018-05-30 15:03:00
    我们在学习python的时候都学过遇到return的时候无条件返回,以下的就不再执行。事实上是这样的吗?...def func_1(): try: return 1 print("finally没被执行") finally: print("finally被执行") ...
  • 关于finally

    千次阅读 2016-12-27 23:51:49
    finally代码块一定会执行吗? 答案当然是否定的。原因显而易见,在如下的情况下,finally代码块不会执行。 在try代码块之前,程序出现异常,不会执行到finally代码块。 在try代码块之前,程序返回,不会执行...
  • finally的作用

    万次阅读 2018-10-18 12:46:20
    上节课我们学习了异常的抛出和捕获,这节课我们再来学一个关键字: finally  finally和final是不一样的哦,final是声明常量的,而finally是做异常处理的。    finally语法: try{ 可能包含异常的代码 }catch...
  • 关于Java finally的面试题(finally的执行时机,finally和return的先后顺序) ** 面试官问题: 什么时候用到finally呢?finally语句在try或catch中的return语句执行之后,还是return返回之前执行呢? 在try{}catch{}...
  • 浅谈finally

    2020-08-22 02:17:00
    1、finally的作用? 2、finally块中的代码什么时候被执行?finally块中的代码一定会执行吗? 3、finally中的return会对返回数据造成什么影响,try catch finall return执行问题 4、final, finally, finalize的区别? ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 78,428
精华内容 31,371
关键字:

finally