Как отловить исключение цели вызова? - PullRequest
0 голосов
/ 14 февраля 2012

У меня есть следующий фрагмент кода:

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 февраля 2012 12: 36: 00,155 - 5210474 миллисекунд

Это не печать трассировки стека.Как узнать причину исключения?

У меня есть незакомментированный код, и я до сих пор не получил отпечаток стека.

Между тем, моя реализация BudgetInBriefDAO (BudgetInBriefDAOImpl) содержит 4 класса.

BudgetInBriefDAOImpl и 3 других класса потоков

Я успешно декомпилировал все файлы классов без повреждения.

Пожалуйста, помогите узнать фактическую причину исключения.

Заранее спасибо.

1 Ответ

1 голос
/ 14 февраля 2012

Попробуйте декомпилировать com.tcs.sgv.common.util.GenericEJBObject;возможно, он проглатывает исключение.

В качестве альтернативы, запустите приложение в режиме отладки и установите точку останова во всех конструкторах InvocationTargetException.

Примечание. Это может оказаться нецелесообразным, посколькудругой код вызывает массу этих исключений задолго до того, как вы доберетесь до места, которое хотите отладить.Если это произойдет, отключите эти точки останова, добавьте новую точку останова в первый glogger.debug и снова включите точки останова исключения, когда эта точка будет нажата.

Если в отладчике есть трассировка стека, установите точку останова вместо, где выдается исключение, прежде чем делать что-либо еще.

Последний вариант: установите точку останова в glogger.fatal (или место, где регистрируется исключение).

...