首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

java 错误有地方不理解, 请

2012-01-16 
java 异常有地方不理解, 请高手指点java 中能“重新抛出异常”如:. . .catch(Exception e) {System.out.prin

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主要是想问为什么要用新的栈信息,也就是为什么只定位到第二次重新抛出的地方
(回答总不能是:我就是想定位在这里)

热点排行