两种异常 有什么区别?
RuntimeException newExc=new RuntimeException("司机一滴酒,亲人两行泪~") ;
newExc.initCause(e);
和
RuntimeException newExc=new RuntimeException(e) ;
//newExc.initCause(e);
RuntimeException newExc=new RuntimeException("司机一滴酒,亲人两行泪~") ;
newExc.initCause(e);
和
RuntimeException newExc=new RuntimeException(e) ;
//newExc.initCause(e);
2016-08-15
区别在于:这里(new RuntimeException("司机一滴酒,亲人两行泪"))调用了RuntimeException这个新异常的含参构造器,异常打印出来第一行是这样的:java.lang.RuntimeException: 司机一滴酒,亲人两行泪;
而RuntimeException newExc=new RuntimeException(e) 是把捕获的DrunkException e(喝大了异常)传进去,打印出来是这样:java.lang.RuntimeException: com.imooc.test.DrunkException: 喝车别开酒!
相当于上面那个是先抛出RuntimeException这个新异常:"司机一滴酒,亲人两行泪";
而下面那个则是直接把捕获的DrunkException(喝大了异常),即原始异常(test1里抛出的异常),抛出。
两个都是实现了异常链的功能。
我也不是很懂,以上都是个人理解。
举报