【发布时间】:2011-06-28 08:30:32
【问题描述】:
我正在调试我的应用程序,我在记录器中添加了exception.getMessage(),但是exception.getMessage() 打印Null,但是,当我调试时,我可以在异常对象的详细消息中看到我的异常字符串,我怎样才能得到异常作为详细消息的消息?注意 - getMessage 返回 Null。
P.S - 我没有使用 PrintStackTrace 或 stacktraceElement,我的记录器应该从 exception.getmessage() 返回字符串,这是要求。
来自评论:
DBException dbExe = new DBException(sqlExe);
DBException objDbEx = (DBException) ExceptionUtil.populateSuperException(dbExe, strTraceMesg, ConstantsIF.SEVERE_LEVEL, false, null, null, null);
throw objDbEx;
public static SuperException populateSuperException (SuperException exSuperException, String strTraceMsg, char chTraceLevel, ) {
if (strTraceMsg != null) {
switch (chTraceLevel) {
case Con.IN:
case Con.S:
//log
}
}
return exSuperException;
}
【问题讨论】:
-
显示一些代码(围绕异常链)。如果你包装你的异常并且包装的异常没有保留消息,那么你会得到一个空值。
-
是的,我包装了异常,但我返回了相同的对象。请看下面的代码。
-
exception.getCause().getMessage()是否保存您的信息? -
DBException dbExe = new DBException(sqlExe); DBException objDbEx = (DBException) ExceptionUtil.populateSuperException(dbExe, strTraceMesg, ConstantsIF.SEVERE_LEVEL, false, null, null, null);抛出 objDbEx; public static SuperException populateSuperException (SuperException exSuperException, String strTraceMsg, char chTraceLevel, ) {if (strTraceMsg != null) { switch (chTraceLevel) { case Con.IN: case Con.S: //log } } return exSuperException; }
-
你能显示一些代码吗?包括正在使用的异常类?它是您创建的类还是标准的 java 异常?