2012-02-14 44 views
0

我有下面这段代码:如何捕捉调用目标异常?

try 
     { 
      glogger.debug("Calling getReportData (BudgetInBriefDAO)"); 
      lHashData = objBudgetInBriefDAO.getReportData(lStrFinYrId, lStrLangId, lStrContextPath, lStrFinYrDesc); 
      glogger.debug("Returning from getReportData (BudgetInBriefDAO)"); 
     } 
//  catch(InvocationTargetException ie) 
//  { 
//   glogger.error("InvocationTargetException !!!"); 
//   glogger.error("InvocationTargetException in calling BudgetInBriefBean -> getReportData"); 
//   glogger.error("Target Exception is : " + ie.getTargetException()); 
//   glogger.error("Cause is : " + ie.getCause()); 
//   ie.printStackTrace(); 
//  } 
     catch(Exception e) 
     { 
      glogger.error("Exception !!!"); 
      glogger.error("Error in calling BudgetInBriefBean -> getReportData. Error is :- " + e); 
      e.printStackTrace(); 
     } 

我收到以下错误:

FATAL : AJPRequestHandler-ApplicationServerThread-25 com.tcs.sgv.common.util.GenericEJBObject - InvocationTargetException :java.lang.reflect.InvocationTargetException - 14 Feb 2012 12:36:00,155 - 5210474 milliseconds

它不是打印堆栈跟踪。我怎么知道异常的原因?

我已取消注释代码&仍未打印堆栈跟踪。

之间,我的BudgetInBriefDAO实现(BudgetInBriefDAOImpl)包含4个类。

BudgetInBriefDAOImpl & 3 other Thread classes

我已成功反编译所有类文件没有损坏。

请帮忙找出异常的实际原因。

在此先感谢。

回答

1

尝试反编译com.tcs.sgv.common.util.GenericEJBObject;也许它吞噬了这个例外。

或者,在调试模式下启动应用程序,并在InvocationTargetException的所有构造函数中设置一个断点。

注意:这可能会变得不切实际,因为其他代码在很久之前就会导致大量这些异常,直到您想要调试的地方。如果发生这种情况,请禁用这些断点,在第一个glogger.debug处添加一个新断点,并在遇到此断点时再次启用异常的断点。

如果在调试器中有堆栈跟踪,请在执行其他任何操作之前在抛出异常的地方设置断点。

最后一个选项:在glogger.fatal(或记录异常的地方)设置断点。