jdk1.4后的,所有异常根类Throwable部分代码
/** 描述异常的信息 */
private String detailMessage;
/** 本异常包裹的原因异常,默认状态下,cause指向本异常 */
private Throwable cause = this;
/** 在构造函数初始化异常的细节信息 */
public Throwable(String message, Throwable cause) {
fillInStackTrace();
detailMessage = message;
this.cause = cause;
}
public Throwable(Throwable cause) {
// 将当前线程的堆栈内容记录在本异常的追踪信息中
fillInStackTrace();
// 记录本异常的细节信息,如果cause为null,则detailMessage为null,否则为cause.toString()
detailMessage = (cause==null ? null : cause.toString());
// 记录异常原因
this.cause = cause;
}
public Throwable(Throwable cause, String message) {
// 将当前线程的堆栈内容记录在本异常的追踪信息中
fillInStackTrace();
// 记录本异常的细节信息
detailMessage = message;
// 记录异常原因
this.cause = cause;
}
/** 获得原因异常,如果cause指向本异常,说明原因异常不存在或未知,返回null */
public Throwable getCause() {
return (cause==this ? null : cause);
}
/** 初始化原因异常,此方法最多调用一次 */
public synchronized Throwable initCause(Throwable cause) {
// 如果原因异常不指向本异常,即原因异常已经存在,抛出异常:说明不能覆盖
if (this.cause != this)
throw new IllegalStateException("Can't overwrite cause");
// 如果输入参数cause指向本异常,抛出异常:不可以把自身作为原因异常
if (cause == this)
throw new IllegalArgumentException("Self-causation not permitted");
// 记录原因异常
this.cause = cause;
return this;
}
/** 原生方法,将当前线程的堆栈内容记录在本异常的追踪信息中 */
public synchronized native Throwable fillInStackTrace();
关于异常链的一个例子
class HighLevelException extends Exception{
public HighLevelException(Throwable cause) {
super(cause);
}
}
class MiddleLevelException extends Exception{
public MiddleLevelException(Throwable cause) {
super(cause);
}
}
class LowLevelException extends Exception{
}
public class TestException {
public void highLevelAccess() throws HighLevelException{
try {
middleLevelAccess();
} catch (Exception e) {
throw new HighLevelException(e);
}
}
public void middleLevelAccess() throws MiddleLevelException{
try {
lowLevelAccess();
} catch (Exception e) {
throw new MiddleLevelException(e);
}
}
public void lowLevelAccess() throws LowLevelException {
throw new LowLevelException();
}
public static void main(String[] args) {
try {
new TestException().highLevelAccess();
} catch (HighLevelException e) {
e.printStackTrace();
}
}
}
错误信息
test.HighLevelException: test.MiddleLevelException: test.LowLevelException
at test.TestException.highLevelAccess(TestException.java:24)
at test.TestException.main(TestException.java:42)
Caused by: test.MiddleLevelException: test.LowLevelException
at test.TestException.middleLevelAccess(TestException.java:32)
at test.TestException.highLevelAccess(TestException.java:22)
... 1 more
Caused by: test.LowLevelException
at test.TestException.lowLevelAccess(TestException.java:37)
at test.TestException.middleLevelAccess(TestException.java:30)
... 2 more
分享到:
相关推荐
这个主题,"Java异常处理体系",涉及到Java如何优雅地处理程序运行时的异常,确保程序的健壮性和稳定性。这篇博文链接(已提供但无法直接访问)可能详细解释了Java异常处理的基本概念、机制以及最佳实践。 Java异常...
本文将对C++和Java两种语言的异常处理机制进行深入的比较和分析,探讨它们的相似之处以及不同之处,以帮助开发者更好地理解和应用这两种语言。 首先,异常处理的基本目的是捕获并处理运行时错误,这些错误通常包括...
### 浅析JAVA异常处理机制 #### 一、Java异常处理机制概述 异常处理是Java语言中的一个重要机制,它能够确保程序在遇到不可预料的情况时仍能维持稳定运行。异常处理主要包括三个方面:捕获异常、控制程序流程以及...
2. **异常链**:当一个异常在处理另一个异常的过程中被抛出,它们之间可以形成异常链,这有助于调试和追踪问题。 3. **自定义异常**:开发人员可以通过创建新的异常类来表示特定的错误条件,该类继承自`Exception`...
通过遵循上述最佳实践,开发者可以编写出更健壮、可维护的Java代码,有效地利用Java异常处理机制来提高程序的稳定性。同时,阅读并理解"Effective Java Exceptions"文档可以帮助进一步深化对Java异常处理的理解。
Java异常处理是Java编程语言中的一个关键特性,它允许程序员优雅地处理程序运行时可能出现的错误和不正常状况。在Java中,异常是程序执行过程中出现的问题,它们中断了正常的控制流程,使得程序无法继续按照预期的...
以下是对Java异常处理的一些误区和经验总结。 **误区一:过度使用try-catch块** 有些开发者习惯于在每个函数的开始部分都套用try-catch块,以为这样可以捕捉所有可能出现的异常。实际上,这种做法使得代码变得混乱...
- 异常处理链(Exception Chaining):一个异常可以导致另一个异常的抛出,形成一个异常链。 2. 异常分类: - 检查性异常(Checked Exceptions):这些异常在编译时就需要被处理,例如`IOException`。如果未被...
Exception类是所有Java异常的基类,它继承自Throwable类。常见的异常类有IOException、NullPointerException、ArrayIndexOutOfBoundsException等。 三、异常处理机制 Java提供了五个关键字来处理异常:try、catch、...
Java异常处理是编程中至关重要的一个部分,它用于管理和恢复程序执行过程中可能出现的错误或异常情况。当程序遇到无法预见的问题,如文件未找到、网络连接中断或计算溢出等,Java通过异常处理机制来优雅地处理这些...
Java异常处理是编程中至关重要的一个环节,它帮助开发者在程序运行时捕获并处理错误,确保程序的健壮性和稳定性。在这个Java异常处理教程中,我们将深入探讨这个主题,以便提升你的Java编程技能。 首先,Java异常是...
Java异常框架处理是Java编程中十分关键的一部分,主要涉及到Java异常类的层次结构、异常的分类、异常的处理方式,以及如何在实际开发中使用异常框架来处理各种运行时错误。 首先,我们需要了解Java的异常类的层次...
4. **异常链**:当一个异常在处理另一个异常的过程中被抛出,可以形成异常链,提供更详细的错误信息。 5. **自定义异常**:开发者可以通过继承`Exception`或其子类来创建自定义异常,以适应特定业务场景。 6. **多...
1. **try-catch-finally**:这是Java异常处理的核心构造,用于捕获并处理异常。`try`块包含可能会抛出异常的代码,如果在`try`块中出现异常,程序会立即跳转到相应的`catch`块。`catch`块定义了如何处理特定类型的...
Java异常处理是编程过程中的重要组成部分,它提供了一种机制来捕获并处理程序运行时可能出现的错误。在Java中,异常是一种事件,通常由不正常的条件或意外情况引起,中断了程序的正常流程。本教程将深入探讨Java异常...
Java异常处理是编程过程中的重要组成部分,特别是在大型的、复杂的软件系统中,它扮演着确保程序稳定性和健壮性的关键角色。本资料包主要聚焦于Java的异常处理机制,提供了丰富的源程序示例,帮助开发者深入理解并...
Java 异常处理机制及应用 Java 异常处理机制是一种重要的技术,它能够帮助开发者处理 Java 语言中的错误和异常,从而提高程序的可靠性和稳定性。本文将从 Java 异常处理机制的原理、分类、抛出和捕获机制、原则等...
Java异常处理是编程中至关重要的一个环节,它用于在程序执行过程中处理错误和不正常的情况。这个压缩包“Java异常处理的方法和几个例子源码.rar”包含了一些示例代码,帮助开发者深入理解Java中的异常处理机制。下面...
Java异常处理机制是Java编程中不可或缺的一部分,它提供了一种有序地处理程序错误和异常情况的方法。这篇19页的PDF文档《深入理解java异常处理机制Java开发Java经验技巧共》可能涵盖了Java异常处理的基本概念、最佳...
Java异常处理是编程中至关重要的一个环节,它确保了程序在遇到错误或异常情况时能够以优雅的方式终止,而不是突然崩溃。在这个简单的Java异常处理主题中,我们将深入探讨异常的设定、捕捉和处理过程,以及如何在...