当前位置: 代码迷 >> J2SE >> java 错误有地方不理解, 请
  详细解决方案

java 错误有地方不理解, 请

热度:509   发布时间:2016-04-24 12:49:16.0
java 异常有地方不理解, 请高手指点
java 中能“重新抛出异常”如:
. . .  
catch(Exception e) {
System.out.println("An exception was thrown");
throw e;
}
不理解的是:既然最后还是重新抛出了,为什么之前要去try...catch它呢?这样重新抛出一下有什么好处呢?


还有,如果可以的话,帮我回答下:
fillInStackTrace( )方法有什么用我到是说得出来,就是不知道为什么要提供这个功能,有这个功能在程序设计时有什么实际的好处?

哪位高人指点下,不胜感激

------解决方案--------------------
catch住异常,并打印相应的信息,是便于调试,大多数是便于处理异常,抛出给你的调用者是告诉他,你的这个方法会发生异常,让他做出相应的对策或者是你处理不了这个异常,需要你的调用者来处理.
fillInStackTrace( )方法在异常堆栈跟踪中填充。此方法在 Throwable 对象信息中记录有关当前线程堆栈帧的当前状态。
------解决方案--------------------
catch(Exception e) { 
System.out.println("An exception was thrown"); 
throw e; 



可以在throw e 前对执行现场进行处理如“System.out.println("An exception was thrown"); ”

------解决方案--------------------
重新抛出意味这我可能需要在这里做一些处理,但是这样的处理并不能解决出现的异常,还需要外部来捕获这个异常.

比如你的代码中,当出现异常后,首先要输出一句话表示异常产生(这里就是我要做的处理,当然实际中可能需要更复杂的处理比如数据库回滚之类的),但是同时这个异常不能被我吞掉,我需要继续将他抛出,让外面继续捕获这个异常
------解决方案--------------------
探讨
楼上两位的说法我都懂,不知道是不是我表达得不好,呵呵

我想要问的重点是为什么会有“重新抛出”这一说法(有这个说法就说明一定在某些方面它很常用)


每二个fillInStackTrace主要是想问为什么要用新的栈信息,也就是为什么只定位到第二次重新抛出的地方
(回答总不能是:我就是想定位在这里)
  相关解决方案