Throwable类中3个异常处理的方法和finally代码块
2024-09-18 02:48:06
/*
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("文件不存在");
}
}
}
最新文章
- mysql基于“时间”的盲注
- 分析案例:应用服务无响应,任务管理器中发现大量w3wp僵尸进程----等待异构系统WebService返回值
- ssh config host
- Shell文本处理 - 分割合并与过滤
- 比较两个mysql数据库表结构的差异
- 详细解析Java中抽象类和接口的区别
- Codeforces Round #367 (Div. 2) A B C 暴力 二分 dp(字符串的反转)
- DEDECMS如何修改数据库密码以及忘记了后台密码怎么办
- windbg命令分类与概述
- javascript创建自定义对象和prototype
- BZOJ4970 IOI2004 empodia障碍段
- SFTP环境搭建及客户代码调用公共方法封装
- python之路(十)-正则表达式
- 手机端图像编辑上传-cropper
- ubuntu16安装MySQL
- JS中集合对象(Array、Map、Set)及类数组对象的使用与对比
- 大型运输行业实战_day09_2_站间互售实现
- mysql优化——explain详解
- Jenkins 集成 Sonar
- Java加密代码 转换成Net版
热门文章
- YOLO系列梳理(三)YOLOv5
- 【问题解决】'Access-Control-Allow-Origin' header contains multiple values '*, *', but only one is allowed.
- 干货|带你体验一次原生OpenStack云平台发放云主机的过程
- ElasticSearch7.3学习(二十三)----RestHighLevelClient Java api实现match_all、ids、match、term、multi_match、bool、filter、sort等不同的搜索方式
- c# SendInput模拟输入字符和按键
- Spring Boot整合模板引擎freemarker
- linux篇-CentOS7搭建NTP服务器
- L2M-GAN: Learning to Manipulate Latent Space Semantics for Facial Attribute Editing阅读笔记
- FileAPI
- 在linux上开启酸酸乳,未完待续