throwable java_java Throwable
public class Throwable
Throwable 类是 Java 语言中所有错误或异常的超类。只有当对象是此类(或其子类之一)的实例时,才能通过 Java 虚拟机或者 Java throw 语句抛出。类似地,只有此类或其子类之一才可以是 catch 子句中的参数类型。
两个子类的实例,Error 和 Exception,通常用于指示发生了异常情况。通常,这些实例是在异常情况的上下文中新近创建的,因此包含了相关的信息(比如堆栈跟踪数据)。
Throwable 包含了其线程创建时线程执行堆栈的快照。它还包含了给出有关错误更多信息的消息字符串。最后,它还可以包含 cause(原因):另一个导致此 throwable 抛出的 throwable。此 cause 设施在 1.4 版本中首次出现。它也称为异常链 设施,因为 cause 自身也会有 cause,依此类推,就形成了异常链,每个异常都是由另一个异常引起的。
导致 throwable cause 的一个理由是,抛出它的类构建在低层抽象之中,而高层操作由于低层操作的失败而失败。让低层抛出的 throwable 向外传播是一种糟糕的设计方法,因为它通常与高层提供的抽象不相关。此外,这样做将高层 API 与其实现细节关联起来,假定低层异常是经过检查的异常。抛出“经过包装的异常”(即包含 cause 的异常)允许高层与其调用方交流失败详细信息,而不会招致上述任何一个缺点。这种方式保留了改变高层实现而不改变其 API 的灵活性(尤其是,异常集合通过其方法抛出)。
导致 throwable cause 的另一个 cause 是,抛出它的方法必须符合通用接口,而通用接口不允许方法直接抛出 cause。例如,假定持久集合符合 Collection 接口,而其持久性在 java.io 的基础上实现。假定 put 方法的内部可以抛出 IOException。实现可以与其调用方交流 IOException 的详细消息,同时通过以一种合适的未检查的异常来包装 IOException,使其符合 Collection 接口。(持久集合的规范应该指示它能够抛出这种异常。)
Cause 可以通过两种方式与 throwable 关联起来:通过一个将 cause 看作参数的构造方法;或者通过 initCause(Throwable) 方法。对于那些希望将 cause 与其关联起来的新 throwable 类,应该提供带有 cause 的构造方法,并委托(可能间接)给一个带有 cause 的 Throwable 构造方法。例如:
try {
lowLevelOp();
} catch (LowLevelException le) {
throw new HighLevelException(le); // Chaining-aware constructor
}
因为 initCause 方法是公共的,它允许 cause 与任何 throwable 相关联,甚至包括“遗留 throwable”,它的实现提前将异常链机制的附件应用到 Throwable。例如:
try {
lowLevelOp();
} catch (LowLevelException le) {
throw (HighLevelException)
new HighLevelException().initCause(le); // Legacy constructor
}
posted on 2008-03-19 16:14 白露 阅读(1257) 评论(0) 编辑 收藏 所属分类: java基础
throwable java_java Throwable相关推荐
- throwable java_java异常Throwable的问题,估计会的没几个。实话!!
有两个异常A和B,都是继承自Exception,在代码中捕获到A,底层抛的时候是封装成B往外抛的,当然还有一部分是B自己的异常,所以catch的时候只能捕获到B,但是我想判断到底是A还是B抛的,我怎么 ...
- php throwable,PHP Throwable接口
介绍 在PHP 7中,Throwable接口充当任何对象的基础,该对象可以是throw语句的参数,包括Error和Exception.分别从其派生预定义的和用户定义的错误与异常类的Error和Exce ...
- JDK源码解析之 java.lang.Throwable
在 Java 中,所有的异常都有一个共同的祖先 Throwable(可抛出).Throwable 指定代码中可用异常传播机制通过 Java 应用程序传输的任何问题的共性. 一.类定义 public c ...
- Java Throwable initCause()方法与示例
Throwable类initCause()方法 (Throwable Class initCause() method) initCause() Method is available in java ...
- throwable和Exception的区别
throwable和exception的区别: 1.throwable是父类,exception是子类. 2.throwable是根基,exception是从throwable派生出来的. 3.thr ...
- Throwable 类
异常 Throwable 类 Throwable 类是Java语言中所有错误和异常的顶级父类,直接子类为 Error 和 Exception 构造方法 // 无参构造:构造一个新的 throwable ...
- Throwable类的详细解释
概述 软件包 类 使用 树 已过时 索引 帮助 JavaTM 2 Platform Standard Ed. 5.0 上一个类 下一个类 框架 无框架 所有 ...
- java的throwable子类_lang——Throwable子类
本文导引: Throwable概述 Throwable是lang包的一级子类,是 Java 语言中所有错误或异常的超类. Throwable有两个子类,即Error 和Exception. Error ...
- throwable在JAVA中什么意思_Throwable和Exception的区别
Java语言要求java程序中(无论是谁写的代码)所有抛出(throw)的异常都必须是从Throwable派生而来.当然,实际的Java编程中,由于JDK平台已经为我们设计好了非常丰富和完整的异常对象 ...
最新文章
- python难嘛-我没有基础,能否学会Python?Python难吗?
- 4个变量取最大值 c++_DNF:安徒恩上线服务器爆满,甲板上全是火山C,通关翻出4个金牌...
- Unity 2017 Game Optimization 读书笔记 Scripting Strategies Part 5
- HALCON示例程序class_2dim_unsup.hdev基于二维直方图的聚类分类
- 细数sass安装中遇到的坑
- 计算机科学与技术排名中澳合作,计算机科学与技术(中澳合作)2018培养方案.docx...
- rsync 自动创建目录的坑点
- MYSQL必知必会-where语句
- MATLAB 距离函数及用法
- codeproject的文章【一】
- 疫情防控背景下在线课程教学满意度影响因素分析与对策探讨-以电子商务及法律专业为例
- 批量打印cad的dwg文件图纸的解决方案
- Android百度地图导航出现无法起调问题的解决方法
- 论文笔记:Delving into Data: Effectively Substitute Training for Black-box Attack
- 坚果云 linux 使用方法,树莓派4B踩坑指南 - (10)安装坚果云(暂时失败)
- 靖哥哥教你如何在docker中安装mysql
- 去掉迅雷右侧内置浏览器
- 【山外笔记-计算机网络·第7版】第10章:计算机网络重要概念
- mysql 索引 二_MySql索引(二)
- 电容电压不能突变和电感电流不能突变仿真分析