Rethowing Exception
2016-07-07 15:18
267 查看
Rethowing Excetpion
在catch的block中可以使用throw继续向上抛,会忽略以后的catch块儿,不会捕获已捕捉的这个Exception。在这种情况下,在更高的调用的时候捕获到的exception还是原来的,但是有两种情况可以改变exception的来源:1.调用e.fillInStackTrace() 2.使用throw,但是抛的是不同的exception
package com.skyon; public class Rethrowing { public static void f() throws Exception { System.out.println("originating the exception in f()"); throw new Exception("throw from f()"); } public static void g() throws Exception{ try{ f(); }catch(Exception e){ System.out.println("Inside g(), e.printStackTrace()"); e.printStackTrace(); throw e; } } public static void h() throws Exception{ try{ f(); }catch(Exception e){ System.out.println("Inside h(), e.printStackTrace()"); e.printStackTrace(System.out); throw (Exception) e.fillInStackTrace(); } } public static void main(String[] args) { try{ g(); }catch(Exception e){ System.out.println("main : printStackTrace()"); e.printStackTrace(System.out); } try{ h(); }catch(Exception e){ e.printStackTrace(); } } } >>>输出: originating the exception in f() java.lang.Exception: throw from f() at com.skyon.Rethrowing.f(Rethrowing.java:6) at com.skyon.Rethrowing.g(Rethrowing.java:11) at com.skyon.Rethrowing.main(Rethrowing.java:30) Inside g(), e.printStackTrace() main : printStackTrace() java.lang.Exception: throw from f() at com.skyon.Rethrowing.f(Rethrowing.java:6) at com.skyon.Rethrowing.g(Rethrowing.java:11) at com.skyon.Rethrowing.main(Rethrowing.java:30) originating the exception in f() Inside h(), e.printStackTrace() java.lang.Exception: throw from f() at com.skyon.Rethrowing.f(Rethrowing.java:6) at com.skyon.Rethrowing.h(Rethrowing.java:20) at com.skyon.Rethrowing.main(Rethrowing.java:36) java.lang.Exception: throw from f() at com.skyon.Rethrowing.h(Rethrowing.java:24) at com.skyon.Rethrowing.main(Rethrowing.java:36)
相关文章推荐
- Web Service属性介绍
- 正则表达式 - 语法
- 结合手机上网流量业务来说明Hadoop中的自定义数据类型(序列化、反序列化机制)
- 基类Activity的抽取
- 算法导论 第二部分——排序和顺序统计量
- Java static 的一两点使用
- 242. Valid Anagram
- VS中的快捷键快速格式化代码,使好看,整齐
- vi/vim命令大全
- maven 系统找不到指定的路径
- Caffe学习系列(12):训练和测试自己的图片
- thinkphp 模板截取中文字符串函数
- 我的Android进阶之旅------>解决Error:Could not find property 'compile' on org.gradle.api.internal.artifacts.
- struts2 小结
- How To Restart The Concurrent Manager In Unix
- ios developer tiny share-20160707
- ios developer tiny share-20160707
- Vmware不能玩游戏的解决方法
- 计算当前时间的到晚上00:00:00的相差时间
- dotnetCore系列:使用Visual Studio code 创建DotNet Core 1.0应用并调试(1)