关于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 ...
随机推荐
- C#-this关键字的功能之扩展方法
目录 1. 简介 2. 简单实例 3. 细节说明 1. 简介 我们的方法都是与声明他的类的相关联(我们现在写的各个方法都是在类中定义,所以我们调用方法都是用该方法所属类的实体对象调用). 在C#3.0 ...
- 【原】Java学习笔记025 - 内部类
package cn.temptation; public class Sample01 { public static void main(String[] args) { // 内部类(嵌套类): ...
- IOS判断NSArray是否为空
场景描述:判断一个集合是否为空,如果不为空执行A,如果为空执行B Java实现方法 public void exec(){ List<String> list = this.getCont ...
- mybatis使用oracle的nulls first/nulls last
nulls first/nulls last 顾名思义,就是在检索结果集里,有null值的时候,把null值认为是最大值,还是最小值. nulls first 放置在结果集最前面 nulls last ...
- windows 与 Centos7 共享文件方法
转自:https://www.cnblogs.com/zejin2008/p/7144514.html 先安装包依赖: yum -y install kernel-devel-$(uname -r) ...
- ubuntu18.04搭建hive
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行. 其优点是学习成本低,可以通过 ...
- 使用offsetof对结构体指针偏移操作
题目来自于COMP20003 Tutorial 2: Program m ing Challenge 2.2 The technology stack at Hidebound Inc. uses a ...
- PyQt5基础应用一
一.PyQt5基础 1.1 创建窗口 import sys from PyQt5.QtWidgets import QApplication, QWidget if __name__ == '__ ...
- 控制结构(4): 局部化(localization)
// 上一篇:状态机(state machine) // 下一篇:必经之地(using) 基于语言提供的基本控制结构,更好地组织和表达程序,需要良好的控制结构. 前情回顾 上一次,我们说到状态机结构( ...
- [转帖]Ansible批量远程管理Windows主机(部署与配置)
2018-09-12 12:04:42 https://blog.51cto.com/7424593/2174156 一.测试环境介绍 Ansible管理主机: 系统: CentOS6.8 IP ...