`
cakin24
  • 浏览: 1398333 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

异常链

    博客分类:
  • java
阅读更多

一 异常链简介
常常会在捕获一个异常后,再抛出另外一个异常,并且希望把异常原始信息保存下来,这被称为异常链。
在JDK1.4以前,程序员必须自己编写代码来保存原始异常信息。
在JDK1.4以后,所有的Throwable的子类在构造器中都可以接收一个cause对象作为参数。这个cause就用来表示原始异常,这样可以把原始异常传递给新的异常,使得即使在当前位置创建并抛出新的异常,你也能通过这个异常链跟踪到异常最初发生的位置。

 

二 异常链的应用
1 代码示例

public class SalException extends Exception
{
	public SalException(){}
	public SalException(String msg)
	{
		super(msg);
	}
	// 创建一个可以接受Throwable参数的构造器
	public SalException(Throwable t)
	{
		super(t);
	}
}

 

public class TestSalException {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try
		{
			Calsal();
		}
		catch(SalException e)
		{
			e.printStackTrace();
		}
		

	}
	public static void Calsal() throws SalException
	{
		try
		{
			int a;
			a=8/0;
		}
		catch(Exception e)
		{
			throw new SalException(e);
		}
	}

}

 2 运行结果
SalException: java.lang.ArithmeticException: / by zero
 at TestSalException.Calsal(TestSalException.java:29)
 at TestSalException.main(TestSalException.java:11)
Caused by: java.lang.ArithmeticException: / by zero
 at TestSalException.Calsal(TestSalException.java:25)
 ... 1 more

0
1
分享到:
评论

相关推荐

    巧妙利用SEH异常链AntiDebug及Od反AntiDebug1

    《巧妙利用SEH异常链进行AntiDebug及OD反AntiDebug技术解析》 在软件安全领域,反调试技术是开发者用来防止恶意分析或逆向工程的一种手段。本文将深入探讨如何利用Structured Exception Handling(SEH)异常链进行...

    Java 常用类解析:java异常机制,异常栈,异常处理方式,异常链,异常丢失详解

    异常链是 Java 语言中的一种异常处理机制,它允许开发者捕获和处理多个异常。异常链可以通过 fillInStackTrace() 方法来重新抛出异常。 8. 异常丢失 异常丢失是 Java 语言中的一种异常处理机制,它允许开发者丢失...

    浅谈java异常链与异常丢失

    本文主要探讨两个关键概念:异常链和异常丢失,以及它们在实际编程中的应用。 异常链是Java提供的一种机制,允许将多个异常串联起来,形成一个“链式”结构。这种设计主要是为了提高代码的可读性和可维护性。当一个...

    Java异常框架设计

    5. **异常链**:Java允许创建异常链,这样就可以保留关于异常起源的完整信息。一个异常可以引用导致它的另一个异常。 6. **多catch块**:Java 7引入了多catch语句,允许在一个catch块中处理多种类型的异常,提高了...

    Java异常学习资料

    4. **异常链**:当一个异常在处理另一个异常的过程中被抛出,可以形成异常链,提供更详细的错误信息。 5. **自定义异常**:开发者可以通过继承`Exception`或其子类来创建自定义异常,以适应特定业务场景。 6. **多...

    Java异常处理教程

    Java允许创建异常链,一个异常可以包含另一个异常作为原因,这有助于追踪问题的源头。通过`initCause()`方法可以设置原因异常。 六、声明异常 在方法签名中,可以使用`throws`关键字声明方法可能抛出的非检查异常...

    关于异常的作业

    除了基本的异常处理机制,还有一些高级特性,如自定义异常类、异常过滤(filter expressions)、异常链(chained exceptions)等,可以帮助开发者更精确地控制异常行为。同时,良好的异常处理策略应遵循以下原则: -...

    java异常管理

    Java支持异常链机制,这意味着一个异常可以包装另一个异常,这样在处理异常时,可以追溯到最初的错误源头。这对于调试和问题定位非常有帮助。 5. 异常的层次结构: Java的异常都继承自java.lang.Throwable类,...

    java异常总结

    在某些情况下,一个异常可能会被另一个异常所包装,这种现象称为异常链。Java 5引入了`getCause()`方法来支持异常链的创建。当一个方法抛出一个异常时,它可以将另一个异常作为原因传递给新的异常对象。这样做的好处...

    后端框架Spring Boot:全面解析异常处理机制

    此外,还讨论了异常链分析、日志记录与异常处理、事务管理等高级技巧,最后通过实战案例展示了如何处理数据库异常和网络请求异常。 适合人群:具有Java开发经验,尤其是对Spring Boot感兴趣的后端开发工程师。 使用...

    关于Java异常的练习

    7. **异常链**:Java允许通过`initCause()`方法创建异常链,显示异常之间的因果关系。 通过这个"关于Java异常的练习",你可以实践如何有效地处理异常,理解何时使用不同的关键字,以及如何编写符合最佳实践的异常...

    java中的异常处理

    Java还支持异常链,这意味着一个异常可以包含另一个异常的信息。这样可以在处理异常时获取更详细的错误信息。 五、自定义异常 当需要表示特定业务逻辑错误时,可以创建自定义异常类。自定义异常类通常继承自...

    高效java异常处理机制

    Java支持异常链,允许一个异常捕获另一个异常。这样,当出现异常时,可以追踪到最初的错误来源,便于调试。 9. **finally块的重要性** finally块用于确保在任何情况下都会执行的代码,通常是资源清理。即使在try...

    java异常处理

    - 异常处理链(Exception Chaining):一个异常可以导致另一个异常的抛出,形成一个异常链。 2. 异常分类: - 检查性异常(Checked Exceptions):这些异常在编译时就需要被处理,例如`IOException`。如果未被...

    Java 自定义异常和抛出异常

    此外,多异常捕获(`catch`多个异常类型)和异常链(记录引发当前异常的原始异常)也是Java异常处理中的实用特性。 总之,自定义异常和抛出异常是Java异常处理机制的重要部分,它们帮助开发者更好地管理和报告程序...

    异常的捕获与处理.

    在某些情况下,异常可能会被嵌套在一起形成异常链。这样可以方便地追踪异常发生的根源。 ```java try { throw new IOException("I/O error", new FileNotFoundException("file not found")); } catch ...

    调试技术与异常(错误)处理

    5. **异常链**:保留异常发生时的上下文信息,通过记录异常的堆栈跟踪,有助于追溯问题根源。 6. **全局异常处理器**:在应用级别设置异常处理器,统一处理未被捕获的异常,提高系统稳定性。 在实际应用中,这些...

    Java 异常处理的误区和经验总结

    2. **异常链机制**:当一个异常被捕获后,仍需记录原始异常,以保留完整的异常信息。Java提供了Throwable类的initCause()方法来实现异常链。 3. **日志记录**:在捕获异常时,记录详细的异常信息,包括堆栈跟踪,这...

    程序异常处理 程序异常处理

    6. **异常链**:当一个异常在处理另一个异常的过程中被抛出,它们可以形成一个异常链,这样可以追踪到异常的根源。 7. **多catch块**:一个try语句可以有多个catch块,每个catch块捕获不同类型的异常,使得可以对...

    java 多线程异常处理

    4. **异常链**:如果一个异常是在处理另一个异常的过程中抛出的,可以使用`initCause()`方法创建异常链,以追踪异常的来源。 5. **定义运行时异常**:自定义的异常类通常继承自`RuntimeException`,除非你明确知道...

Global site tag (gtag.js) - Google Analytics