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"); ”
------解决方案--------------------
重新抛出意味这我可能需要在这里做一些处理,但是这样的处理并不能解决出现的异常,还需要外部来捕获这个异常.
比如你的代码中,当出现异常后,首先要输出一句话表示异常产生(这里就是我要做的处理,当然实际中可能需要更复杂的处理比如数据库回滚之类的),但是同时这个异常不能被我吞掉,我需要继续将他抛出,让外面继续捕获这个异常
------解决方案--------------------