一、try catch finally return之间的关系:

正在写dsoFramer的时候,同事突然说面试的时候问的一个问题,catch和return那个先执行,我瞬间迷茫了,然后整理了整理,稍微找了点资料,才明白这之间的联系。嘿嘿,献丑了。

  1、当这四个关键字全部存在的时候,finally是永远执行的

  ex:1、在try中没有异常的情况下try、catch、finally的执行顺序 try -- finally(catch不执行)

     2、如果try中异常,执行顺序是try -- catch -- finally

     3、try中没有异常并且try中有return这时候正常执行顺序是try -- finally -- return(catch不执行)

     4、try中异常并且try中有return这时候正常执行顺序是try--catch--finally-- return

  2、return是不会执行的

    try-catch-finally里都没有return ,finally 之后有个return ,如果try中有异常,finally执行完后,不再执行return,try中有异常以后,根据异常机制先执行catch后执  行finally,此时错误异常已经抛出,程序因异常而终止,所以return任然不执行。

  3、finally中的return会覆盖掉其它位置的return

    在存在try-catch-finally的方法中,return可能出现的位置有4个,在try中,在catch中,在finally中,在finally后(try-catch-finally外的语句块)。在这4个位置都出现  return的情况下(应该是不可能的,如果前面3个位置都存在return,那么最后一个位置的return就成了unreachable code,编译不会通过),最终会执行的return应该是          finally中的return。

转载于:https://www.cnblogs.com/JeffController/p/4958819.html

try catch finally return之间的关系相关推荐

  1. 异常 try catch finally return 执行关系 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  2. 程序中try、throw、catch三者之间的关系

    c++程序中,采用一种专门的结构化处理逻辑的异常处理机制. 1.try语句 try语句块的作用是启动异常处理机制,检测try语句块中程序语句执行时可能出现的异常. try语句块总是与catch一同出现 ...

  3. Spring-bean之间的关系

    概述 继承 实例 依赖 实例 引用 实例 总结 概述 不但可以通过<ref>引用另外一个bean,建立起Bean和Bean之间的依赖关系, bean元素标签之间也可以建立类似的关系,完成一 ...

  4. 正确理解 AsyncTask,Looper,Handler三者之间的关系(基于android 4.0)

    Looper 和Handler 是理解好AsyncTask的一个基础,我们可以先从这里开始,先给出一个主线程和子线程互相通信的例子. 1 package com.example.loopertest; ...

  5. Message、Handler、Message Queue、Looper、Thread之间的关系(未完成)

    1. 请解释下在单线程模型中Message.Handler.Message Queue.Looper.Thread之间的关系 2. 什么是IntentService?有何优点? 1) 它是对单线程消息 ...

  6. 一篇文章看明白 Android 图形系统 Surface 与 SurfaceFlinger 之间的关系

    Android - SurfaceFlinger 图形系统 相关系列 一篇文章看明白 Android 系统启动时都干了什么 一篇文章了解相见恨晚的 Android Binder 进程间通讯机制 一篇文 ...

  7. Mybatis之表之间映射关系总结

    1.什么是表之间映射关系 就是多张表进行关联,如果查询等操作不只是与一张表有关系,同时其他表也要进行操作. 2.数据库中的连接查询 表结构: 顾客表:customers                 ...

  8. JDBC,JdbcTemplate,JPA,Hibernate之间的关系概述

    什么是JDBC? Java语言访问数据库的一种规范,是一套API.JDBC (Java Database Connectivity) API,即Java数据库编程接口,是一组标准的Java语言中的接口 ...

  9. jdbc、jdbcTemplate、hibernate、jpa、spring之间的关系

    JPA 的底层实现是一些流行的开源 ORM 框架,因此JPA其实也就是java实体对象和关系型数据库建立起映射关系,通过面向对象编程的思想操作关系型数据库的规范 Getting started wit ...

  10. Activity、Window、DecorView、ViewRootImpl之间的关系

    我们通常写Activity的时候在onCreate里面都会写上setContentView()这一步,该方法会将你指定的布局文件加载并显示到屏幕中,在其中会经历一系列操作,其中也就涉及到了Activi ...

最新文章

  1. 一线互联网技术:Java工程师架构知识系统化汇总,面完45K!
  2. 动态代理——事务处理
  3. C语言do...while语句的妙用(包裹宏替换多句代码)(代替go to语法)(隔绝外部变量)
  4. mysql select 缓存_mysql select缓存机制使用详解
  5. URAL - 1114-Boxes (分步乘法原理)
  6. LeetCode Number Complement
  7. HTML行内元素、块状元素和行内块状元素的区分
  8. [总结] 本人代表性博客总结
  9. 【渝粤教育】国家开放大学2018年春季 0653-21T机电控制与可编程控制技术 参考试题
  10. HTML语言的三要素,web前端基础技术三要素HTML、CSS、JavaScript
  11. Java设计模式及类图
  12. 【目标检测】|数据增强 Copy-Paste
  13. Eureka的自我保护机制
  14. 什么是 docker?docker和虚拟机有什么差别和不同?
  15. 【春节旅游攻略】南京周边出发,小众又好玩的景点推荐
  16. 揭秘今日头条推荐10万+
  17. 2008年4月28日A股市场存在筑底异样
  18. SAP 批量修改或添加BOM组件
  19. ALLEGRO如何制作封装
  20. /*编写一个程序,使用自定义的swap函数,利用指针作为参数,将两个浮点数变量的值进行交换。*/

热门文章

  1. flutter自定义View(CustomPainter) 之 canvas的方法总结
  2. Java笔记 —— 继承
  3. php查找之二分查找
  4. 树莓派 Zero WH 初使用体验
  5. 通过elasticsearch对日志进行搜索热词统计
  6. Go-闭包和匿名函数讲解
  7. 面向对象——三大特性(封装、继承、多态)
  8. 《oracle每天一练》Oracle冷备份与数据恢复
  9. 2013 Multi-University Training Contest 1
  10. 如何理解linux的平均负载?