关于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/c++ linux 进程间通信系列4,使用共享内存
linux 进程间通信系列4,使用共享内存 1,创建共享内存,用到的函数shmget, shmat, shmdt 函数名 功能描述 shmget 创建共享内存,返回pic key shmat 第一次创 ...
- Proxmox VE中出现TASK ERROR: command 'apt-get update' failed: exit code 100的解决方法
问题描述: 出现这个错误一般在WEB或者在Proxmox VE的服务器上面能看到日志: PVE中出现TASK ERROR: command 'apt-get update' failed: exit ...
- 用kali执行arp攻击-----------使对方断网
实现原理 其主要原理是局域网内的"攻击机"通过冒充同网络号下的"受害者主机"的物理地址(mac地址),通过欺骗网关,让网关原来应该发给"受害者主机&q ...
- SQLServer之修改DEFAULT约束
使用SSMS数据库管理工具修改DEFAULT约束 1.连接数据库.选择数据表->右键点击->选择设计. 2.在表设计器窗口->选中要修改的数据列->在列属性中找到默认值绑定-& ...
- QQ的孤独
接触网络到现在,已是好多年前的事了.初识网络犹如初恋般,充满了新鲜和好奇,于是,从聊天室到QQ,MSN,邮箱,再去BBS.然后有了博客^^^^^^ 那时的网络于我是那般充满诱惑,整天穿梭其中,乐此不彼 ...
- 英语进阶系列-A05-英语升级练习三
古诗背诵 要求:认真背诵和朗读,然后翻译成现代文,并绘制图像描述图中的意向,时间限制到10 minutes.另外,从中找出英文单词,并记录. 例如:慈母 = kind mother,手 = hand, ...
- Git的可视化工具SourceTree管理代码 SourceTree的使用
出处:https://blog.csdn.net/android_zhengyongbo/article/details/72885860 其他参考资料https://www.cnblogs.com/ ...
- javaScript判断手机型号
window.onload = function () { alert("1"); var u = navigator.userAgent; if (u.indexOf('Andr ...
- 将docker镜像上传到docker hub
- 解决 AttributeError: 'ForeignKey' object has no attribute 're'
解决办法 # print('rel...',filter_field_obj.re.to.objects.all()) print("rel...", filter_field_o ...