1. class Exc{
  2. int a;
  3. int b;
  4. }
  5.  
  6. public class Except {
  7. @SuppressWarnings("finally")
  8. static int compute (){
  9. Exc e = new Exc();
  10. e.a = 10;
  11. e.b = 10;
  12. int res = 0 ;
  13. try{
  14. res = e.a / e.b;
  15. System.out.println("try ……");
  16. return res + 1;
  17.  
  18. }catch(NullPointerException e1){
  19. System.out.println("NullPointerException occured");
  20. }catch(ArithmeticException e1){
  21. System.out.println("ArithmeticException occured");
  22. }catch(Exception e3){
  23. System.out.println("Exception occured");
  24. }finally{
  25. System.out.println("finnaly occured");
  26. }
  27. System.out.println(res);
  28.  
  29. return res+3;
  30. }
  31.  
  32. public static void main(String[] args){
  33. int b = compute();
  34. System.out.println("mian b= "+b);
  35. }
  36. }

  输出:

try ……
finnaly occured
mian b= 2

结论: 如果没有异常, 则执行try 中的代码块,直到 try 中的 return,接着执行 finally 中的代码块,finally 执行完后 , 回到try 中执行 return 。退出函数。

  1. class Exc{
  2. int a;
  3. int b;
  4. }
  5.  
  6. public class Except {
  7. @SuppressWarnings("finally")
  8. static int compute (){
  9. Exc e = new Exc();
  10. // e.a = 10;
  11. // e.b = 10;
  12. int res = 0 ;
  13. try{
  14. res = e.a / e.b;
  15. System.out.println("try ……");
  16. return res + 1;
  17.  
  18. }catch(NullPointerException e1){
  19. System.out.println("NullPointerException occured");
  20. }catch(ArithmeticException e1){
  21. System.out.println("ArithmeticException occured");
  22. }catch(Exception e3){
  23. System.out.println("Exception occured");
  24. }finally{
  25. System.out.println("finnaly occured");
  26. }
  27. System.out.println(res);
  28.  
  29. return res+3;
  30. }
  31.  
  32. public static void main(String[] args){
  33. int b = compute();
  34. System.out.println("mian b= "+b);
  35. }
  36. }

  输出:

ArithmeticException occured
finnaly occured
0
mian b= 3

结论: 如果try 中有异常, 则在异常语句处,跳转到catch 捕获的异常代码块, 执行完 catch 后,再执行 finally ,跳出 try{}catch{}finally{} ,继续向下执行,不会去执行try中 后面的语句。

  1. public class Test2 {
  2. public static void main(String [] args){
  3. System.out.println(com());
  4. }
  5.  
  6. @SuppressWarnings("finally")
  7. static boolean com(){
  8. try{
  9. return true;
  10. }finally{
  11. return false;
  12. }
  13.  
  14. }
  15. }

  输出 false

  1. public class Test3 {
  2. public static void main(String[] args){
  3. try{
  4. System.out.println("try……");
  5. System.exit(0);
  6. }finally{
  7. System.out.println("finally……");
  8. }
  9. }
  10. }

输出: 

try……  程序退出,不执行 finally

try finally 执行顺序的更多相关文章

  1. Java的初始化块、静态初始化块、构造函数的执行顺序及用途探究

    Java与C++有一个不同之处在于,Java不但有构造函数,还有一个”初始化块“(Initialization Block)的概念.下面探究一下它的执行顺序与可能的用途. 执行顺序 首先定义A, B, ...

  2. MonoBehaviour Lifecycle(生命周期/脚本执行顺序)

    脚本执行顺序 前言 搭建一个示例来验证Unity脚本的执行顺序,大概测试以下部分: 物理方面(Physics) 渲染(Scene rendering) 输入事件(InputEvent) 流程图 Uni ...

  3. Unity中脚本的执行顺序总结(@WhiteTaken)

    (Editor)以上是Unity官方文档中的截图,脚本在被挂载到物体上,会启用Editor的方法Reset. (Initialization)当执行脚本开始,初始化的过程中,依次执行的是Awake-& ...

  4. 《Java编程思想》学习笔记(二)——类加载及执行顺序

    <Java编程思想>学习笔记(二)--类加载及执行顺序 (这是很久之前写的,保存在印象笔记上,今天写在博客上.) 今天看Java编程思想,看到这样一道代码 //: OrderOfIniti ...

  5. Java学习笔记__异常机制_try_catch_finally_return执行顺序

    package cn.xiaocangtian.Exception; import java.io.FileInputStream; import java.io.FileNotFoundExcept ...

  6. 关于sql的执行顺序

    标准sql的解析顺序为 1)FROM子句,组装来自不同数据源的数据 2)WHERE子句 基于制定的条件对记录进行筛选 3)GROUP BY 子句将数据划分为多个分组 4)使用聚合函数进行计算 5) 使 ...

  7. SQL 语句与性能之执行顺序

    select * , t3.Name from t1 left join t2 on t1.sysno = t2.Asysno left join t3 on t3.sysno = t2.Bsysno ...

  8. 关于JavaScript预编译和执行顺序以及函数引用类型的思考

    昨晚在对项目中的一部分做模块化处理的时候,遇到了一个问题,一个重新定义的function对一个通用类中的function进行赋值覆盖的时候,失败了.问题抽象出来是这样的: <script > ...

  9. JMeter专题系列(三)元件的作用域与执行顺序

    1.元件的作用域 JMeter中共有8类可被执行的元件(测试计划与线程组不属于元件),这些元件中,取样器是典型的不与其它元件发生交互作用的元件,逻辑控制器只对其子节点的取样器有效,而其它元件(conf ...

  10. [转载]T-SQL(Oracle)语句查询执行顺序

    原文链接:http://blog.sina.com.cn/s/blog_61c006ea0100mlgq.html sql语法的分析是从右到左,where子句中的条件书写顺序,基本上对sql性能没有影 ...

随机推荐

  1. Linux中C语言的编程

    编译的过程 编译的概念:编译程序读取源程序(字符流),对之进行词法与语法的分析,将高级语言指令转换成功能等效的汇编代码,再由汇编程序转换成机器语言,并且按照操作系统对可执行文件格式的要求链接成可执行程 ...

  2. centos7服务器基本的安全设置

    在使用云服务器的过程中经常会遇到很多非法的入侵试图登录服务器,所以我们需要对服务器进行安全防范 关闭ping扫描,虽然没什么卵用 先切换到root echo 1 > /proc/sys/net/ ...

  3. Java调用Oracle存储过程

    package com.hp.test; import java.sql.CallableStatement; import java.sql.Connection; import java.sql. ...

  4. Spark Streaming on Kafka解析和安装实战

    本课分2部分讲解: 第一部分,讲解Kafka的概念.架构和用例场景: 第二部分,讲解Kafka的安装和实战. 由于时间关系,今天的课程只讲到如何用官网的例子验证Kafka的安装是否成功.后续课程会接着 ...

  5. appium自动化,失败自动截图

    1.创建监听器类TestNGListener,重写onTestFailure方法,里面定义了 监听的driver ,截图文件路径和名称 package utils; import cases.Appi ...

  6. JAVA加解密 -- 消息摘要算法

    消息摘要算法是一种单向加密算法 主要用于验证数据完整性,也是数字签名的核心算法 消息鉴别:指在接收方将原始信息进行摘要,然后与接收到的摘要信息进行对比 a.MD家族 – MD5(128位摘要信息) M ...

  7. lodash kebabCase

    _.kebabCase([string='']) 转换字符串为 kebab case. _.kebabCase('Foo Bar'); // => 'foo-bar' _.kebabCase(' ...

  8. Photoshop之学习笔记(2) - 常用快捷键

    1.1024x768常用桌面分辨率2.点阵图(像素图).矢量图3.PPI 分辨率  DPI 打印输出的分辨率4.选框工具5.拾色器(默认H恢复色条 色相)6.Ctrl+D 取消选框工具7.Ctrl+S ...

  9. 通过浏览器查看nginx服务器状态配置方法

    通过浏览器查看nginx服务器状态配置方法 投稿:junjie 字体:[增加 减小] 类型:转载 这篇文章主要介绍了通过浏览器查看nginx服务器状态配置方法,本文讲解开启nginx-status的配 ...

  10. React Native Android入门实战及深入源代码分析系列(2)——React Native源代码编译

    本文为老曾原创.转载需注明出处:viewmode=contents">http://blog.csdn.net/minimicall?viewmode=contents 在上一节中,我 ...