try catch finally return之间的关系
一、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之间的关系相关推荐
- 异常 try catch finally return 执行关系 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- 程序中try、throw、catch三者之间的关系
c++程序中,采用一种专门的结构化处理逻辑的异常处理机制. 1.try语句 try语句块的作用是启动异常处理机制,检测try语句块中程序语句执行时可能出现的异常. try语句块总是与catch一同出现 ...
- Spring-bean之间的关系
概述 继承 实例 依赖 实例 引用 实例 总结 概述 不但可以通过<ref>引用另外一个bean,建立起Bean和Bean之间的依赖关系, bean元素标签之间也可以建立类似的关系,完成一 ...
- 正确理解 AsyncTask,Looper,Handler三者之间的关系(基于android 4.0)
Looper 和Handler 是理解好AsyncTask的一个基础,我们可以先从这里开始,先给出一个主线程和子线程互相通信的例子. 1 package com.example.loopertest; ...
- Message、Handler、Message Queue、Looper、Thread之间的关系(未完成)
1. 请解释下在单线程模型中Message.Handler.Message Queue.Looper.Thread之间的关系 2. 什么是IntentService?有何优点? 1) 它是对单线程消息 ...
- 一篇文章看明白 Android 图形系统 Surface 与 SurfaceFlinger 之间的关系
Android - SurfaceFlinger 图形系统 相关系列 一篇文章看明白 Android 系统启动时都干了什么 一篇文章了解相见恨晚的 Android Binder 进程间通讯机制 一篇文 ...
- Mybatis之表之间映射关系总结
1.什么是表之间映射关系 就是多张表进行关联,如果查询等操作不只是与一张表有关系,同时其他表也要进行操作. 2.数据库中的连接查询 表结构: 顾客表:customers ...
- JDBC,JdbcTemplate,JPA,Hibernate之间的关系概述
什么是JDBC? Java语言访问数据库的一种规范,是一套API.JDBC (Java Database Connectivity) API,即Java数据库编程接口,是一组标准的Java语言中的接口 ...
- jdbc、jdbcTemplate、hibernate、jpa、spring之间的关系
JPA 的底层实现是一些流行的开源 ORM 框架,因此JPA其实也就是java实体对象和关系型数据库建立起映射关系,通过面向对象编程的思想操作关系型数据库的规范 Getting started wit ...
- Activity、Window、DecorView、ViewRootImpl之间的关系
我们通常写Activity的时候在onCreate里面都会写上setContentView()这一步,该方法会将你指定的布局文件加载并显示到屏幕中,在其中会经历一系列操作,其中也就涉及到了Activi ...
最新文章
- 一线互联网技术:Java工程师架构知识系统化汇总,面完45K!
- 动态代理——事务处理
- C语言do...while语句的妙用(包裹宏替换多句代码)(代替go to语法)(隔绝外部变量)
- mysql select 缓存_mysql select缓存机制使用详解
- URAL - 1114-Boxes (分步乘法原理)
- LeetCode Number Complement
- HTML行内元素、块状元素和行内块状元素的区分
- [总结] 本人代表性博客总结
- 【渝粤教育】国家开放大学2018年春季 0653-21T机电控制与可编程控制技术 参考试题
- HTML语言的三要素,web前端基础技术三要素HTML、CSS、JavaScript
- Java设计模式及类图
- 【目标检测】|数据增强 Copy-Paste
- Eureka的自我保护机制
- 什么是 docker?docker和虚拟机有什么差别和不同?
- 【春节旅游攻略】南京周边出发,小众又好玩的景点推荐
- 揭秘今日头条推荐10万+
- 2008年4月28日A股市场存在筑底异样
- SAP 批量修改或添加BOM组件
- ALLEGRO如何制作封装
- /*编写一个程序,使用自定义的swap函数,利用指针作为参数,将两个浮点数变量的值进行交换。*/