`
bugyun
  • 浏览: 558960 次
社区版块
存档分类
最新评论

java return、finally、throw 执行顺序

    博客分类:
  • Java
 
阅读更多
package com.bugyun.face;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class Question {
    
    public static void main(String[] args) {
       int i = exceptionReturn();
       System.err.println(i);
    }
  
    
    /**
     * 测试 throw 、 return 、 finally 的执行顺序
     * 执行顺序:
     *      throw -> catche -> return -> finally
     *      方法返回的值是2
     * @return    
     * @author beyond
     * @data:2017年5月31日上午9:57:39
     */
    public static int exceptionReturn(){
        int i = 1;
        try {
            System.out.println("  throw 部分");
            throw new Exception();             
        } catch (Exception e) {
            System.out.println("  catch 部分 ");
            return ++i;
        }finally {
            System.out.println("  finally 部分 begin , i = "+i);
            ++i;
            System.out.println("  finally 部分 end , i = "+i);
        }
    }
    
}

 

  调用方法返回值2,的顺序不稳定,但其他执行顺序稳定



 

  • 大小: 15.3 KB
分享到:
评论

相关推荐

    Java异常发生时程序的执行顺序

    Java提供了五种关键字来处理异常:`try`, `catch`, `finally`, `throw`, 和 `throws`。 1. **try** 代码段:这是可能抛出异常的代码块。如果在这个区域内发生了异常,程序会立即跳转到相应的 `catch` 语句块。 2. ...

    java流程控制语句

    跳转语句用于在代码中进行非顺序执行流控制,Java提供了break、continue、label、return等跳转语句。其中,break用于立即退出最内层的循环或switch语句,continue用于跳过当前循环的剩余部分并开始下一次循环迭代,...

    java异常ppt

    在处理返回值时,如果`try`块中有`return`语句,那么在执行`return`之前,`finally`块的代码会被执行。 自定义异常是通过创建新的异常类实现的,这些类通常继承自Exception或其子类。例如,创建名为MyException的...

    java面试题 (用心收集)

    2. **try-finally的执行顺序**:即使`try`块中有`return`语句,`finally`块的代码也会在`return`之前执行,确保清理操作得以完成。 3. **快速计算2乘以8**:在Java中,可以使用位左移运算符`,如`2 ,这等价于2乘以...

    200个Java经典面试题总结附带答案.docx

    18. `try-catch-finally` 中,如果 `catch` 中 `return` 了,`finally` 还会执行吗?(是) Java 集合 19. 哪些集合类是线程安全的?(`Vector`、`Hashtable` 等) 20. `Collection` 和 `Collections` 有什么区别...

    java核心技术 卷一(第9版).pdf

    控制流程是指程序的执行顺序,Java使用多种控制流语句来改变代码的执行顺序,包括条件语句(if-else、switch)、循环语句(for、while、do-while)和分支语句(break、continue、return)。熟练掌握控制流语句对于...

    Java异常处理-异常处理的方式1

    - 题1:`finally`块中的return语句会覆盖try-catch块中的return吗? - 题2:如果`finally`块中有throw语句,会怎样? - 题3:如何在`finally`块中避免覆盖已设置的返回值? 总的来说,Java异常处理机制使得代码更加...

    Java面试宝典2013_PDF版.pdf

    同步通常在有依赖关系的任务需要按照一定顺序执行时使用,例如线程同步。异步则用于不依赖其他任务结果的任务,例如异步事件处理。 49. 下面两个方法同步吗?(自己发明) 文档未给出具体方法内容,无法进行点评。...

    java面试题基础篇

    在 Java 中,`try-finally` 结构中的 `finally` 块总会被执行,即使 `try` 块中有 `return` 语句也不例外。具体来说: - 如果 `try` 块中有 `return` 语句,那么 `finally` 块会在 `return` 语句执行之后、返回值...

    Java精选试题,英文Java试题

    因此,尽管 `try` 块中的 `return` 语句导致了 `main` 方法提前结束,但在 `finally` 块中的 `System.out.println("Finally")` 依然会被执行并输出 "Finally"。 #### 题目五:异常处理与流程控制 **题目描述**: ``...

    Java面试宝典2017

    `try`和`finally`的执行顺序 `finally`块总是被执行,无论`try`块中是否抛出异常。如果`try`块中有`return`语句,`finally`块将在`return`语句之前执行。 #### 39. 程序代码输出的结果 此部分未给出具体代码,...

    java语言基本语法.docx

    abstract、boolean、break、byte、case、catch、char、class、const、continue、default、do、double、else、enum、extends、final、finally、float、for、goto、if、implements、import、instanceof、int、...

    Java异常处理总结

    Java异常处理机制主要依赖于以下几个关键字:`try`、`catch`、`throw`、`throws` 和 `finally`。 1. **try**:用于包裹可能引发异常的代码块。 2. **catch**:用于捕获try块中产生的特定类型的异常,并进行相应的...

    trycatchfinaly

    #### 五、try-catch-finally 的执行顺序 1. **正常执行**:如果`try` 块内的代码正常执行完毕(没有抛出异常),则执行`finally` 块。 2. **异常发生**:如果`try` 块内的代码抛出了异常,并且有对应的`catch` 块...

    Java 异常处理练习.doc

    - `finally`块总是在`try`和`catch`块结束后执行,无论是否抛出异常,`finally`块中的代码都会在`return`之前执行。 5. **常见运行时异常举例**: - `NullPointerException`:当试图访问或操作一个null对象时抛出...

    宜信公司java程序员笔试题面试题.pdf,这是一份不错的文件

    - final、finally和finally块的执行顺序是理解程序控制流的关键,final修饰的方法不能被重写,finally块在return之前执行。 3. **Web部分**: - XML元素的定义有严格的语法规则,比如元素名是大小写敏感的。 - ...

    java程序员面试宝典

    48. 同步是指多个线程按顺序执行,异步是指多个线程可以同时执行。同步用于保护临界区的代码段,防止数据不一致;异步用于提高程序执行效率。 49. 这个问题没有提供具体方法,无法判断同步性。 50. 多线程可以通过...

    java面试资料2019

    - 执行顺序是在`return`之前执行`finally`中的代码。 #### 39. 程序代码输出结果 - 需要具体的代码示例才能分析。 #### 40. `final`、`finally`、`finalize` - `final`用于声明不可变变量或方法。 - `finally`用于...

    java面试题

    - `finally`块中的代码会在`return`语句之前执行,也就是说,`finally`块中的代码可能会修改返回值。 7. **Java中如何处理异常:** - 使用`try-catch`结构来捕获和处理异常。 - 可以使用`throw`关键字抛出异常。 ...

Global site tag (gtag.js) - Google Analytics