欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

异常链 博客分类: java ArithmeticException异常链 

程序员文章站 2024-03-25 18:03:28
...

一 异常链简介
常常会在捕获一个异常后,再抛出另外一个异常,并且希望把异常原始信息保存下来,这被称为异常链。
在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