相关疑难解决方法(0)

Java中没有StackTrace的NullPointerException

我有我们的Java代码的实例捕获NullPointerException,但当我尝试记录StackTrace(基本上最终调用Throwable.printStackTrace())时,我得到的是:

java.lang.NullPointerException
Run Code Online (Sandbox Code Playgroud)

还有其他人遇到过这个吗?我试过谷歌搜索"java空指针空堆栈跟踪",但没有遇到这样的事情.

java nullpointerexception

308
推荐指数
6
解决办法
9万
查看次数

Java中没有堆栈跟踪的异常

这可能是一个非常天真的问题.

我曾经认为a Throwablein Java 总是包含堆栈跟踪.这是对的吗?现在看起来我exceptions 没有堆栈跟踪就抓住了.是否有意义?是否有可能在没有堆栈跟踪的情况下捕获异常?

java exception stack-trace

46
推荐指数
4
解决办法
4万
查看次数

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

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

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

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显示完整的堆栈跟踪

我正在尝试使用抛出异常的应用程序调试问题,即使我使用-XX:MaxJavaStackTraceDepth=16777216(或那里的任何其他值,如-12048),堆栈跟踪也会被切断。

它是这样切断的:

Caused by: java.lang.IllegalStateException: unexpected message type: DefaultLastHttpContent
    at io.netty.handler.codec.http.HttpObjectEncoder.encode(HttpObjectEncoder.java:124)
    at io.netty.handler.codec.http.HttpClientCodec$Encoder.encode(HttpClientCodec.java:167)
    at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:89)
    ... 89 more
Run Code Online (Sandbox Code Playgroud)

我想看到更多的堆栈跟踪元素而不是... 89 more如何实现?

这是在 Java 8 中使用 SLF4J + Logback 使用以下配置进行日志记录:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
            </Pattern>
        </layout>
    </appender>
    <root level="info">
        <appender-ref ref="STDOUT"/>
    </root>
</configuration>
Run Code Online (Sandbox Code Playgroud)

java logback slf4j java-8

9
推荐指数
1
解决办法
519
查看次数