关于try catch finally 三者之间的关系(JDK 1.8)
话不多说 线上代码
package System; import java.util.Scanner;
/**
*
* @author chris
*
*/
public class TryCathfianly {
final static int i =100;
public static void main(String[] args) {
System.out.println("请输入被除数!");
Scanner in= new Scanner(System.in);
int b;
int c = 0;
b = in.nextInt();
try {
c = i/b;
System.out.println("我是try "+c);
} catch (Exception e) {
// c++;
System.out.println("我是catch "+ ++c);
}finally {
// c++;
System.out.println("我是finally "+ ++c);
}
}
}
很多时候 我们的try去扑获 异常时 会用到finally 显然我们都知道 finally是会必定运行的 那么 到底怎么个运行情况呢 我们开始
情况一 输入的被除数 非0 也就是无异常情况 结果如下
情况二 输入的被除数为 0 此刻也就是异常情况 结果如下
结论很简单 ! 当try中有异常的情况下 不会执行catch 并且 finally都是最后执行的(且必定执行)
在这里 有人会说 如果给 try 和 catch 加上 return 是否不会执行 finally呢 !!! 那么好的 笔者上代码
package System; import java.util.Scanner;
/**
*
* @author chris
*
*/
public class TryCathfianly {
final static int i =100;
public static void main(String[] args) {
System.out.println("请输入被除数!");
Scanner in= new Scanner(System.in);
int b;
int c = 0;
b = in.nextInt();
try {
c = i/b;
System.out.println("我是try "+c);
return;
} catch (Exception e) {
// c++;
System.out.println("我是catch "+ ++c);
return;
}finally {
// c++;
System.out.println("我是finally "+ ++c);
}
}
}
很遗憾的 是 结果是一样的!!!!!!!!!!!!所以 结论成立! 谢谢 实习时间发一个博客玩玩 很多你认为不在乎的细节 了解的东西 其实往往很重要
---------------------------------------------------------------------------更新如下----------------------------------------------------------------------------------------
有同学问我,那我说的finally必定会执行是错了! 那么我就和大家说一下finally何时不会执行!!!!!
第一种情况: 当你还未执行 try的时候,你就已经return结束了当前方法,那肯定不会执行后面的finally,这肯定是正确的,不然会与return的语法冲突。
第二种情况: 这种情况呢,很冲突啊,就是直接关掉你的JVM虚拟机,此时你拿什么执行呢? 你只需要在 try代码块中加入 System.exit(0);
对了 有人说 那么finally是在 return之前执行还是在return之后执行呢 在这里我就不多说了 我放一个链接吧 https://blog.csdn.net/zoujian1993/article/details/45362931
结论!!!!!
到底返回值变不变可以简单的这么记忆:当finally调用的任何可变API,会修改返回值;当finally调用任何的不可变API,对返回值没有影响。
其实return与finally并没有明显的谁强谁弱。在执行时,是return语句先把返回值写入但内存中,然后停下来等待finally语句块执行完,return再执行后面的一段。
------------------------------以上呢就是我的补充 希望大家新的一年开开心心------------------------------------
关于try catch finally 三者之间的关系(JDK 1.8)的更多相关文章
- 程序中try、throw、catch三者之间的关系
c++程序中,采用一种专门的结构化处理逻辑的异常处理机制. 1.try语句 try语句块的作用是启动异常处理机制,检测try语句块中程序语句执行时可能出现的异常. try语句块总是与catch一同出现 ...
- silverlight Canvas、StackPanel、Grid三者之间的关系
学习 silverlight 首先Canvas.StackPanel.Grid 博客园里看到jailu的这篇文章整理得很好 贴下来: Silverlight提供了非常灵活的布局管理系统,让程序员和 ...
- 电脑结构和CPU、内存、硬盘三者之间的关系
前面提到了,电脑之父——冯·诺伊曼提出了计算机的五大部件:输入设备.输出设备.存储器.运算器和控制器. 我们看一下现在我们电脑的: 键盘鼠标.显示器.机箱.音响等等. 这里显示器为比较老的CRT显示器 ...
- try catch finally return之间的关系
一.try catch finally return之间的关系: 正在写dsoFramer的时候,同事突然说面试的时候问的一个问题,catch和return那个先执行,我瞬间迷茫了,然后整理了整理,稍 ...
- 【Linux网络编程】TCP网络编程中connect()、listen()和accept()三者之间的关系
[Linux网络编程]TCP网络编程中connect().listen()和accept()三者之间的关系 基于 TCP 的网络编程开发分为服务器端和客户端两部分,常见的核心步骤和流程如下: conn ...
- 网络互联技术(2)——前篇—【转载】电脑结构和CPU、内存、硬盘三者之间的关系
原文链接:传送门 详细内容: 电脑结构和CPU.内存.硬盘三者之间的关系 前面提到了,电脑之父——冯·诺伊曼提出了计算机的五大部件:输入设备.输出设备.存储器.运算器和控制器. 我们看一下现在我们电脑 ...
- 转:spring data jpa、 hibernate、 jpa 三者之间的关系
原文链接:spring data jpa. hibernate. jpa 三者之间的关系 spring data jpa hibernate jpa 三者之间的关系 JPA规范与ORM框架之间的关系是 ...
- Window系统、主函数和窗体函数这三者之间的关系
理解Window系统.主窗体.窗体函数这三者之间的关系,对于编写Windows程序十分重要. 主函数和窗体函数都是由Windows系统来调用的函数.仅仅只是主函数是程序启动之后.系统首先调用的函数: ...
- 5.Javascript 原型链之原型对象、实例和构造函数三者之间的关系
前言:用了这么久js,对于它的原型链一直有种模糊的不确切感,很不爽,隧解析之. 本文主要解决的问题有以下三个: (1)constructor 和 prototype 以及实例之间啥关系? (2)pro ...
随机推荐
- javaweb学习--javabean
阅读电子书<Java Web从入门到精通>密码:461c,学习JavaWeb基础知识 JavaBean类似于.net的实体类,但是规则上稍复杂一些,能实现的功能也多一些 一.介绍 1.规则 ...
- Thinkphp volist 多重循环原样输出数组key值的使用总结
最近因为项目的缘故,要使用到volist.在这个过程中,遇到了一些小问题,主要就是volist在循环输出多重数据的时候,如何输出key.网上查阅了不少资料,很失望的是,大多资料就是粘贴复制Thinkp ...
- win10系统的“USB选择性暂停设置”怎么打开
Win10系统自带的“USB选择性暂停设置”功能开启后会帮助我们节省电源,这一项功能对于笔记本来说用处很大.那么怎样才能打开这一功能呢?下面小编就来告诉大家打开“USB选择性暂停设置”功能的方法. 1 ...
- 基于SpringBoot搭建应用开发框架(二) —— 登录认证
零.前言 本文基于<基于SpringBoot搭建应用开发框架(一)——基础架构>,通过该文,熟悉了SpringBoot的用法,完成了应用框架底层的搭建. 在开始本文之前,底层这块已经有了很 ...
- hadoop 集群 master datanode 没有启动
2018-02-07 02:47:50,377 WARN org.apache.hadoop.hdfs.server.common.Storage: java.io.IOException: Inco ...
- LoadRunner 压力测试使用基础步骤
一.新建脚本 二.新建脚本-选择协议,这里选择Web (HTTP/HTML) 三.开始录制(指定程序与URL) 四.场景设计(设计虚拟用户访问场景) 五.运行情况(可以看到运行结果) 六.分析报告(总 ...
- [转帖] CA如何保护自己的私钥
作者:Gh0u1L5链接:https://www.zhihu.com/question/22260090/answer/648910720来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业 ...
- safari打开的页面数字识别变为蓝色
今天网页碰到一个很怪异的问题:app打开的一个网页样式是好的,但通过safari打开后数字的颜色变为蓝色,并且还变得可点击了! 原来safari总会把长串数字识别为电话号码,文字变成蓝色,点击还会弹出 ...
- spring和mybatis的整合配置
参考自: http://www.cnblogs.com/wangmingshun/p/5674633.html 链接中的文章里一共有三种整合方式,太多了怕记混了. 我这里只保留第二种. spring中 ...
- Java 面向对象的基本特征
前言: 在刚开始接触Java的时候,那时候面对Java面向对象的几大特征一直理解的不是很理解,借着空闲时间在这里整理一下,同时在加深一下印象. 一.封装: Java面向对象的特征之封装,所谓的封装就 ...