/*
Throwable类中定义了3个异常处理的方法
String getMessage() 返回此 throwable 的简短描述。
String toString() 返回此 throwable 的详细消息字符串。
void printStackTrace() JVM打印异常对象,默认此方法,打印的异常信息是最全面的
*/
//System.out.println(e.getMessage());//文件的后缀名不对
//System.out.println(e.toString());//重写Object类的toString java.io.IOException: 文件的后缀名不对
//System.out.println(e);//java.io.IOException: 文件的后缀名不对 /*
java.io.IOException: 文件的后缀名不对
at com.learn.demo02.Exception.Demo01TryCatch.readFile(Demo01TryCatch.java:55)
at com.learn.demo02.Exception.Demo01TryCatch.main(Demo01TryCatch.java:27)
*/

finally:有一些特定的代码无论异常是否发生,都需要执行。另外,因为异常会引发程序跳转,导致有些语句执行不到。而finally就是解决这个问题的,在finally代码块中存放的代码都是一定会被执行的

什么时候的代码必须最终执行?

当我们在try语句块中打开了一些物理资源(磁盘文件/网络连接/数据库连接等),我们都得在使用完之后,最终关闭打开的资源

finally的语法:

try...catch....finally:自身需要处理异常,最终还得关闭资源

注意:finally不能单独使用

比如IO流中,当打开了一个关联文件的资源,最后程序不管结果如何,都需要把这个资源关闭掉。

finally代码参考如下:

public class TryCatchDemo4 {
public static void main(String[] args) {
try {
read("a.txt");
} catch (FileNotFoundException e) {
//抓取到的是编译期异常 抛出去的是运行期
throw new RuntimeException(e);
} finally {
System.out.println("不管程序怎样,这里都将会被执行。");
}
System.out.println("over");
}
/*
*
* 我们 当前的这个方法中 有异常 有编译期异常
*/
public static void read(String path) throws FileNotFoundException {
if (!path.equals("a.txt")) {//如果不是 a.txt这个文件
// 我假设 如果不是 a.txt 认为 该文件不存在 是一个错误 也就是异常 throw
throw new FileNotFoundException("文件不存在");
}
}
}

最新文章

  1. mysql基于“时间”的盲注
  2. 分析案例:应用服务无响应,任务管理器中发现大量w3wp僵尸进程----等待异构系统WebService返回值
  3. ssh config host
  4. Shell文本处理 - 分割合并与过滤
  5. 比较两个mysql数据库表结构的差异
  6. 详细解析Java中抽象类和接口的区别
  7. Codeforces Round #367 (Div. 2) A B C 暴力 二分 dp(字符串的反转)
  8. DEDECMS如何修改数据库密码以及忘记了后台密码怎么办
  9. windbg命令分类与概述
  10. javascript创建自定义对象和prototype
  11. BZOJ4970 IOI2004 empodia障碍段
  12. SFTP环境搭建及客户代码调用公共方法封装
  13. python之路(十)-正则表达式
  14. 手机端图像编辑上传-cropper
  15. ubuntu16安装MySQL
  16. JS中集合对象(Array、Map、Set)及类数组对象的使用与对比
  17. 大型运输行业实战_day09_2_站间互售实现
  18. mysql优化——explain详解
  19. Jenkins 集成 Sonar
  20. Java加密代码 转换成Net版

热门文章

  1. YOLO系列梳理(三)YOLOv5
  2. 【问题解决】'Access-Control-Allow-Origin' header contains multiple values '*, *', but only one is allowed.
  3. 干货|带你体验一次原生OpenStack云平台发放云主机的过程
  4. ElasticSearch7.3学习(二十三)----RestHighLevelClient Java api实现match_all、ids、match、term、multi_match、bool、filter、sort等不同的搜索方式
  5. c# SendInput模拟输入字符和按键
  6. Spring Boot整合模板引擎freemarker
  7. linux篇-CentOS7搭建NTP服务器
  8. L2M-GAN: Learning to Manipulate Latent Space Semantics for Facial Attribute Editing阅读笔记
  9. FileAPI
  10. 在linux上开启酸酸乳,未完待续