Java 异常对象在记录器中打印为空

Java 异常对象在记录器中打印为空,java,exception,exception-handling,Java,Exception,Exception Handling,我有一个方法必须捕获异常。 生产和销售过程中存在缺陷 当我查看日志文件时 我发现了一些奇怪的东西。 似乎有一个例外, 当我通过实现toString()来搜索用于打印异常对象的catch块时, 我发现该对象打印为空。 我找到了2到3个链接,但从来没有一个明确的答案。 下面是我的方法和日志 public void downloadFile() throws ServletException, IOException { try{ //some logic to downloa

我有一个方法必须捕获异常。 生产和销售过程中存在缺陷 当我查看日志文件时 我发现了一些奇怪的东西。 似乎有一个例外, 当我通过实现toString()来搜索用于打印异常对象的catch块时, 我发现该对象打印为空。 我找到了2到3个链接,但从来没有一个明确的答案。 下面是我的方法和日志

public void downloadFile() throws ServletException, IOException
{
    try{
        //some logic to download a  file
    }
    catch(Exception e) {
        setRetMessage("File cannot be download.");   
        PAYTFFileDebug.trace("Error in download >>>>>>>>> "+e.toString(),PAYTFFileDebug.LEVEL_5);
    }
}
下面是我在日志中发现的一些不寻常的东西


Fri Jan 27 14:50:13 GMT+05:30 2015:第5级:下载错误>>>>>>>>>>>>>>>空值

通常您希望记录异常的堆栈跟踪。我不知道您使用的是哪个底层日志框架,但大多数框架都允许您在消息之后传递一个可丢弃的日志。例如,在Log4J中,我们有:

public void error(Object message,
     Throwable t)
如果您的日志框架支持它,您可以尝试:

PAYTFFileDebug.error("Error in download.", e);

这将确保您记录该异常的完整堆栈跟踪,然后可以更好地解决问题。

尝试
e.getMessage()
这是一个不寻常的异常,它意味着
e.toString()
返回空值。您是否有自己的实现toString的异常类?在任何情况下,您是否尝试过在调试模式下本地运行并在该位置放置断点?@Ascalonian,谢谢。我将尝试但我想知道的是null异常对象的原因。它不是
null
exception对象。这是返回
null
toString()
方法。事实上,如果
e
null
,该调用将抛出
NullPointerException
@Naveen。您还没有
null
异常对象。您得到了一个非
null
异常对象,该对象从其
toString()
方法返回
null
。那是另一回事。以这种方式处理异常没有什么错。然而,在本例中发生了一些有趣的事情。logger是用户定义的。不使用其他框架。即使它是用户定义的,它也是代码接受的特定类型。