我正在尝试使用Spring AOP获取发生异常的确切行。
@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(..))
我不知道如何获得发生错误的确切行号。请帮忙。
答案 0 :(得分:0)
将原始异常作为原因传递给TrialBalException
,然后将包含原始堆栈跟踪(带行号)。然后在您的方面打印异常。