Java:有关try、catch和finally的学习(供自己参考)
Java:有关try、catch和finally的学习
在看到书本的时候对finally的介绍是:不论是否在try块中产生异常,都会执行finally。当时对这句话的理解不够深,误以为在try...catch的结构中finally会必定执行。当时我产生一个疑问:catch已经对异常进行处理了,那后面的语句势必会执行,无论是否有finally。为此我还做了个小程序来验证。
ExceptionDemo.java
Version 1:
/**
* Created by Funny_One on 2017/8/30.
*/
public class ExceptionDemo {
public static void main(String[] args){
try{
int b = 1/0;
}catch (Exception e){
System.out.println("This is an Exception");
}
System.out.println("Not finally yet");
}
}
Version 2:
/**
* Created by Funny_One on 2017/8/30.
*/
public class ExceptionDemo {
public static void main(String[] args){
try{
int b = 1/0;
}catch (Exception e){
System.out.println("This is an Exception");
}
finally {
System.out.println("Not finally yet");
}
}
}
结果:

这就很纳闷了。。。。然后和同学讨论,我们注意到书上有这么两句话:“不论是正常退出try块,还是因为抛出一个异常而退出,都要执行finally。”以及“try后面不一定要加catch”于是我们想到会不会不要catch块的时候才能展示出finally的功能???于是我们改变程序的代码。
Version 3:
public class ExceptionDemo {
public static void main(String[] args){
try{
int b = 1/0;
}
System.out.println("Not finally yet");
}
}
但这个版本连编译都无法通过,运行后出现了错误:

根据错误的要求,我在代码中加上了finally:
Version 4 :
/**
* Created by Funny_One on 2017/8/30.
*/
public class ExceptionDemo {
public static void main(String[] args){
try{
int b = 1/0;
}
finally {
System.out.println("Not finally yet");
}
}
}
结果:

此外,还有一个要,程序先执行了finally中的语句,然后才开始报出异常。至此,知道了finally怎么用。
Java:有关try、catch和finally的学习(供自己参考)的更多相关文章
- 20172319 《Java程序设计教程》 第9周学习总结
20172319 2018.05.06-05.14 <Java程序设计教程>第9周学习总结 目录 教材学习内容总结 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管 上周考 ...
- 20172319 《Java程序设计教程》 第10周学习总结
20172319 2018.05.09-05.21 <Java程序设计教程>第10周学习总结 目录 教材学习内容总结 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管 上周 ...
- java 并发编程——Thread 源码重新学习
Java 并发编程系列文章 Java 并发基础——线程安全性 Java 并发编程——Callable+Future+FutureTask java 并发编程——Thread 源码重新学习 java并发 ...
- 201871010123-吴丽丽 《面向对象程序设计(Java)》第十六周学习总结
201871010123-吴丽丽 <面向对象程序设计(Java)>第十六周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...
- 201271050130-滕江南-《面向对象程序设计(java)》第十六周学习总结
201271050130-滕江南-<面向对象程序设计(java)>第十六周学习总结 博文正文开头格式:(2分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.c ...
- 201271050130-滕江南-《面向对象程序设计(java)》第十五周学习总结
201271050130-滕江南-<面向对象程序设计(java)>第十五周学习总结 博文正文开头格式:(2分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.c ...
- 201871010111-刘佳华《面向对象程序设计(java)》第十六周学习总结
学号-姓名<面向对象程序设计(java)>第十六周学习总结 实验十四 应用程序归档与线程初步 实验时间 2019-12-12 第一部分:理论知识总结 1.程序与进程的概念 ‐程序是一段静 ...
- 201871010111-刘佳华《面向对象程序设计(java)》第十五周学习总结
201871010111-刘佳华<面向对象程序设计(java)>第十五周学习总结 实验十三 Swing图形界面组件(二) 实验时间 2019-12-6 第一部分:理论知识总结 5> ...
- 201871010123-吴丽丽《面向对象程序设计(Java)》第十五周学习总结
201871010123-吴丽丽<面向对象程序设计(Java)>第十五周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...
随机推荐
- 需求:promise执行买菜做饭过程
需求:promise执行买菜做饭过程 1.买菜 2.洗菜 3.做饭 4.吃饭 <!DOCTYPE html> <html lang="en"> <he ...
- Python中级 —— 02函数式编程
函数式编程 函数是Python内建支持的一种封装,而函数式编程通俗说来就是把函数本身作为参数传入另一个函数,允许返回一个函数. 函数名其实也是变量,也可以被赋值.如果函数名被赋值为其他值,则不再指向原 ...
- 升级Xcode10报错问题修复
Xcode10 问题1 报文件重复 File--> Workspace Settings --> Build System 修改为Legacy Build System (默认是New B ...
- ElasticSearch优化系列四:ES的heap是如何被瓜分掉的
以下分别解读几个我知道的内存消耗大户: Segment Memory Segment不是file吗?segment memory又是什么?前面提到过,一个segment是一个完备的lucene倒排索引 ...
- 使用CURL实现GET和POST方式请求
/** 使用curl方式实现get或post请求@param $url 请求的url地址@param $data 发送的post数据 如果为空则为get方式请求return 请求后获取到的数据 */f ...
- Delphi Compiler Bug?
I found a Bug of Delphi XE3 Compiler,It may exists in XE4,XE5. Here is the code to show the bug proc ...
- spark RDD官网RDD编程指南
http://spark.apache.org/docs/latest/rdd-programming-guide.html#using-the-shell Overview(概述) 在较高的层次上, ...
- 编写Makefile规则
一个工程中的源文件不计其数,其按类型.功能.模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作 ...
- ubuntu下python在pycharm环境下安装setuptools和pip,和distutils.core
python安装好后,我们用pycharm安装所需的第三方模块时,出现“Python packaging tools not found. install packaging tools”点击安装输完 ...
- java入门---运算符&算术运算符&自增自减运算符&关系运算符&位运算符
计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量.我们可以把运算符分成以下几组: 算术运算符 关系运算符 位运算符 逻辑运算符 赋值运算符 ...