关于Spring AOP异常日志记录

时间:2013-07-04 09:32:26

标签: java spring exception exception-handling spring-aop

我正在尝试使用Spring AOP获取发生异常的确切行。
AspectLogger.java中的代码:

@AfterThrowing(pointcut = "execution(* com.ing.trialbal.*.*.*(..))", throwing = "ex")
public void afterThrowingAdvice(JoinPoint jp, TrialBalException ex) {
    logger.info("Exception : After throwing " + jp.getSignature().getName()
            + "()");
    logger.info("********* " + ex.getMessage()
            + " Exception occured during " + jp.toShortString());
    System.out.println("********* " + ex.getMessage()
            + " Exception occured during " + jp.toShortString());

}


DAO类中的代码,我将异常抛给服务:

try {
    ...
} catch (Exception e) {
    System.out.println("(((((((((((((" + e.getStackTrace().toString());
    throw new TrialBalException("Error.TrialBalance.Exception : " + e);
} finally {
    try {
        pStmt.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}


在日志中我得到了:
例外:抛出getLongTBDetail()后 Error.TrialBalance.Exception:java.lang.NullPointerException执行期间发生异常(LongTBDaoImpl.getLongTBDetail(..))

我不知道如何获得发生错误的确切行号。请帮忙。

1 个答案:

答案 0 :(得分:0)

将原始异常作为原因传递给TrialBalException,然后将包含原始堆栈跟踪(带行号)。然后在您的方面打印异常。