相关疑难解决方法(0)

没有调试代理程序,NullPointerException堆栈跟踪不可用

我最近发现了一个导致NullPointerException的错误.使用标准的slf4j语句捕获并记录异常.以下简要代码:

for(Action action : actions.getActions()) {
    try {
        context = action.execute(context);
    } catch (Exception e) {
        logger.error("...", e);
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,没什么特别的.但是,在我们拥有的所有异常日志记录语句中,只有这一个不打印堆栈跟踪.它打印的全部是消息(表示为"...")和异常类的名称(java.lang.NullPointerException).

由于异常上的堆栈跟踪是延迟加载的,我想可能存在某种指令重新排序问题,并决定在日志语句之前调用e.getStackTrace().这没有任何区别.

所以我决定在启用调试代理的情况下重新启动.但是,因为我甚至连接到这个过程,我注意到现在堆栈的痕迹正在打印.很明显,调试代理的存在导致一些额外的调试信息变得可用.

从那时起我就修复了异常的根本原因.但我想了解为什么没有调试器就无法使用堆栈跟踪.谁知道?

澄清:这不是日志记录问题.想象一下相同的try/catch子句,但在catch中,我打印的值为:

e.getStackTrace().length
Run Code Online (Sandbox Code Playgroud)

没有调试器,它打印'0',调试器打印一个正数(在这种情况下为9).

更多信息:这发生在JDK 1.6.0_13,64bit,amd64,linux 2.6.9上

java logging nullpointerexception stack-trace

58
推荐指数
2
解决办法
3万
查看次数

如何在没有堆栈跟踪的情况下创建/抛出异常?

今天我正在浏览一些日志并遇到一个奇怪的错误.

以下是它在日志中的显示方式:

2014/09/11 15:23:52.801 [CC3A5FDD16035540B87F1B8C5E806588:<removed>] WARN a.b.c.Ddd - Main failure 
java.lang.NullPointerException: null
2014/09/11 15:23:52.801 [CC3A5FDD16035540B87F1B8C5E806588:<removed>] ...
Run Code Online (Sandbox Code Playgroud)

这是代码的样子:

} catch (Exception e) {
    Ddd.log.warn("Main failure ", e);
    throw e;
}
Run Code Online (Sandbox Code Playgroud)

如果重要的话,代码在jsp中.在日志中再次重复相同的异常(正如您所期望的那样throw e).

我没有原因记录 - 日志中的前一行显示了查询的执行情况.这种情况在4天内发生了两次,似乎没有对系统造成任何伤害.

环境:使用Java 5在Tomcat下运行的相当繁忙的Web服务.

我不是在询问有关调试系统的提示 - 这些错误很久以后甚至不会再发生.关于如何在没有堆栈跟踪的情况下创建任何异常(特别是NPE),我感到很难过?

添加

正在使用的记录器是一个slf4j驱动Logback实例.我相信这个warn方法就在这里.不确定Logback解决了什么方法,但我确信Throwable参数是专门处理的,如果附加了堆栈跟踪Throwable,它将出现在日志中.

LogBack.xml - 根据要求:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <property name="log.package" value="Package" />
  <property name="log.pattern" value="%date{yyyy/MM/dd HH:mm:ss.SSS} [%X{session}:%X{device}] %level %logger{25} - %msg%n"/> 
  <property …
Run Code Online (Sandbox Code Playgroud)

java nullpointerexception

14
推荐指数
1
解决办法
5362
查看次数

标签 统计

java ×2

nullpointerexception ×2

logging ×1

stack-trace ×1