Java异常--常见方法--自定义异常--增强try(try-with-resources)详解
作者:一只小余 发布时间:2021-10-31 07:17:42
标签:java,自定义,异常,try-with-resources
异常方法
//返回此可抛出对象的详细信息消息字符串
public String getMessage()
//将此可抛发对象及其回溯到标准错误流。此方法在错误输出流上打印此 Throwable 对象的堆栈跟踪
//最为详细
public void printStackTrace()
//返回此可抛件的简短说明
public String toString()
对于1/0这个异常
try{
int i = 1/0;
} catch(Exception e){
System.out.println("e = " + e);
System.out.println("-----------------");
System.out.println("e.getMessage() = " + e.getMessage());
System.out.println("-----------------");
System.out.println("e.getStackTrace() = " + Arrays.toString(e.getStackTrace()));
System.out.println("-----------------");
System.out.println("e.getLocalizedMessage() = " + e.getLocalizedMessage());
System.out.println("-----------------");
System.out.println("e.getCause() = " + e.getCause());
System.out.println("-----------------");
System.out.println("e.getClass() = " + e.getClass());
System.out.println("-----------------");
System.out.println("e.getSuppressed() = " + Arrays.toString(e.getSuppressed()));
}
e = java.lang.ArithmeticException: / by zero
-----------------
e.getMessage() = / by zero
-----------------
e.getStackTrace() = [省略27行,com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)]
-----------------
//可能的原因
e.getCause() = null
-----------------
//一个数组,其中包含为传递此异常而禁止显示的所有异常。
//就是用try捕获却不做事的
e.getSuppressed() = []
自定义异常
作用
让控制台的报错信息更加的见名知意
定义
1.定义异常类,写继承关系。
名字要见名知义,继承于异常类。
像运行时可以继承RuntimeException
在开发过程中一般会有多种异常类,小的会继承自定义的大的。
2.写构造方法
需要书写空参和带参的构造。
可以调用父类的也可以自定义
增强try(try-with-resources)
作用
简化释放资源的步骤
条件
自动释放的类需要实现autocloseable的接口
这样在特定情况下会自动释放,还有的就是stream流中提到过。
jdk7
try(创建对象资源1;创建对象资源2){
}catch(){
}
例如这样的代码可以改写成
BufferedInputStream b = null;
try {
b = new BufferedInputStream(new FileInputStream(""));
}catch (Exception e) {
e.printStackTrace();
}finally {
if (b!=null) {
try {
b.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
try (BufferedInputStream b = new BufferedInputStream(new FileInputStream(""));){
}catch (Exception e) {
e.printStackTrace();
}
jdk9
创建对象1
创建对象2
try(变量名1;变量名2){
}catch(){
}
上面的代码可以改写成,
不过需要注意的是创建对象也需要异常处理,我们这里选择抛出
public void testTryWithResource() throws FileNotFoundException {
BufferedInputStream b = new BufferedInputStream(new FileInputStream(""));
try (b) {
} catch (Exception e) {
e.printStackTrace();
}
}
来源:https://blog.csdn.net/qq_56717234/article/details/129466797


猜你喜欢
- 前言相信大家都用过Spring Security和Shiro的框架,Spring Security必须配合Spring 全家桶使用和繁琐的配
- java 并发线程个数的确定本文从控制变量的角度来谈决定线程个数的依据。模型很简单,在实际的生产环境中,情况肯定比下文要复杂的多。要充分的进
- 文章按照 Socket 的 创建、连接、传输数据、释放资源的过程来写。给出方法、参数的详细信息。一,网络基础说到 Socket,需要学习一下
- 本文实例为大家分享了Unity实现10天签到系统的具体代码,供大家参考,具体内容如下实现功能:正常在游戏中签到,并把剩下的倒计时给显示出来。
- 本文所述代码是从一个C#程序中摘录出来的,主要实现C#创建目录、删除文件夹及文件的功能,包括所引用的名称空间等,特别是对C#不熟悉的初学者,
- 译文链接: https://www.infoworld.com/art...AutoMapper 是一个非常流行的 object-to-ob
- MVC注解式开发即处理器基于注解的类开发, 对于每一个定义的处理器, 无需在xml中注册.只需在代码中通过对类与方法的注解, 即可完成注册.
- TabControl控件中TabPage选项卡切换时的触发事件选项卡切换触发的是TabControl控件的SelectedIndexChan
- 前言我们在上一篇文章 中以实例讲解如何定义和使用 lambda 表达式,以及与其它语言相比,lambda 表达式在 Java 中的特殊规范。
- 这篇文章主要介绍了深入了解JVM字节码增强技术,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参
- 在海量数据中查找出重复出现的元素或者去除重复出现的元素是面试中常考的文图。针对此类问题,可以使用位图法来解决。例如:已知某个文件内包含若干个
- 一、什么是命令模式命令模式是一个高内聚的模式,其定义为:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请 求排队或者记录
- 启动Activity并传递参数Extra正常情况下启动Activity并且传递参数的代码:Intent intent = new Inten
- 简介最近花了两天时间研究使用Flutter开发一个抖音国际版. 个人感觉使用Flutter开发app快得不要不要的额. 两天就基本可以开发个
- Android EditText输入手机号空格开发需求是在登录页面的手机EditText中间插入空格,让用户看起来方便点, 130 1234
- Knife4j就相当于是swagger的升级版,对于我来说,它比swagger要好用得多1、在pom.xml引入依赖包<!-- Swa
- 小米系统自带的长截屏应该很多人都用过,效果不错。当长截屏时listview就会自动滚动,当按下停止截屏时,就会得到一张完整的截屏。该篇就介绍
- 我也不知道这个叫什么,就是比如我要打开我电脑的计算机,可以直接在命令行输入“calc”就可以了。现在用让代码去执行。public stati
- 1.获取签名与模板进入阿里云平台,进入短信服务模块,在以下位置添加签名和模板(格式一定按照要求填写 审批的比较严格)2.编写模板与签名的枚举
- JWT本文代码截取自实际项目。jwt(Json Web Token),一个token,令牌。简单流程:用户登录成功后,后端返回一个token