2012-02-14 77 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(或記錄異常的地方)設置斷點。