当前位置: 代码迷 >> Java相关 >> java错误传播求教
  详细解决方案

java错误传播求教

热度:9838   发布时间:2013-02-25 21:50:32.0
java异常传播求教
现在看到很多开源框架的异常都是封装好的,比如struts,spring,都把Exception给封装成runtime exception,请教的问题是,
我怎么才能得到原来抛出的异常,比如一个异常时数据库异常SQLException,封装之后呢,就变成了HibernateDataAccessException,那能不能得到原来的异常信息,比如SQLException的信息,这个我想如果能获得的话,也应该是要运行时才能获得的吧,如果不能,为什么?

------解决方案--------------------------------------------------------
如果是人家catch了,然后没有进一步throw出来,或者改throw了一个其他异常出来,那么这个异常就被吞了,无法得到了。
运行时有一个获取的办法是使用AOP,在人家catch之前拦截异常。
------解决方案--------------------------------------------------------
探讨

一楼说得对,我其实就是用AOP拦截,但是像spring,一些代码直接就是写的catch(DataAcessException),这样AOP拦截的也是这个DataAcessException,能得到根源的那个Exception么,比如可能原来是数据库的一个异常,结果在这里它抓到的是DataAcessException,能不能追溯到原来的数据库异常?

------解决方案--------------------------------------------------------
这个好像不可以了,别人已经封装了,不过调用还是调用到了最原始的Exception
------解决方案--------------------------------------------------------
探讨
引用:
引用:

一楼说得对,我其实就是用AOP拦截,但是像spring,一些代码直接就是写的catch(DataAcessException),这样AOP拦截的也是这个DataAcessException,能得到根源的那个Exception么,比如可能原来是数据库的一个异常,结果在这里它抓到的是DataAcessExcepti……
  相关解决方案