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