从头认识java-10.5 栈轨迹和重新抛出异常

页面导航:首页 > 软件编程 > Java编程 > 从头认识java-10.5 栈轨迹和重新抛出异常

从头认识java-10.5 栈轨迹和重新抛出异常

来源: 作者: 时间:2016-01-21 09:39 【

这一章节我们来讨论一下出现异常的时候的栈轨迹和重新抛出异常。1 栈轨迹打印栈轨迹有两种方式:(1)不改变原先的代码package com ray ch10;public class Test {public static void main(Strin

这一章节我们来讨论一下出现异常的时候的栈轨迹和重新抛出异常。

1.栈轨迹

打印栈轨迹有两种方式:

(1)不改变原先的代码

 

package com.ray.ch10;

public class Test {
	public static void main(String[] args) {
		try {
			throw new Exception(cause);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

输出:

 

java.lang.Exception: cause
at com.ray.ch10.Test.main(Test.java:6)

(2)自定义打印方法栈轨迹

 

package com.ray.ch10;

public class Test {
	public static void main(String[] args) {
		try {
			throw new Exception(cause);
		} catch (Exception e) {
			for (StackTraceElement element : e.getStackTrace()) {
				System.out.println(element.getMethodName());
				System.out.println(element.getFileName());
				System.out.println(element.getClassName());
				System.out.println(element.getLineNumber());
			}
		}
	}
}

输出:

 

main
Test.java
com.ray.ch10.Test
6

 

我们对比一下两个代码块的输出,其实下面的那个输出就是上面输出的组成元素。

 

2.重新抛出异常。

有些时候我们不需要在某一层次来处理异常,特别是web应用主流的m结构,不同层级管理不同的东西,但是有些时候我不想在某层处理异常,那么我需要重新抛出异常。

 

package com.ray.ch10;

public class Test {
	
	private void test() throws Exception {
		try {
			throw new Exception(cause);
		} catch (Exception e) {
			throw e;
		}
	}
	
	public static void main(String[] args)  {
		try {
			new Test().test();
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println(处理代码);
		}
	}
}

输出:

 

java.lang.Exception: cause
at com.ray.ch10.Test.test(Test.java:7)
at com.ray.ch10.Test.main(Test.java:15)
处理代码

 

从代码和输出那里可以看见,我虽然在test方法里面抛异常,但是我这里不管,再扔出去到上一次,main方法里面来处理。

 

总结:我们这一章节主要讨论了栈轨迹和重新抛出异常。

 

 

 

 

Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<