这不是我第一次看到异常消息,但我很好奇stacktrace中的特殊字符是什么意思。我在Android中使用Java,这个异常在类名旁边显示一个$8
,然后是发生异常的方法名。
我正在研究,但找不到任何关于这意味着什么的信息。下面是我指的stackTrace和8美元的代码。
java.lang.Exception: Error, server response 400
at cb.cheneytracker.service.callers.ServerCaller$8.onResponse(ServerCaller.java:858)
at retrofit2.DefaultCallAdapterFactory$ExecutorCallbackCall$1$1.run(DefaultCallAdapterFactory.java:83)
所以更准确地说,因为我被投了“需要细节或清晰”的票。在上面的异常堆栈跟踪中,$
意味着什么。我看到了$8
和$1$1
,这是什么意思?
据我所知,它是编译器自动生成的匿名类的名称
它是匿名类的自动生成名称,它是8,因为容器类中至少有8个匿名类,您可以在此处看到它的作用:
interface Test {
void doSomething();
}
public static Test createTest() {
return new Test() {
@Override
public void doSomething() {
System.out.println("I'm busy...");
}
};
}
public static Test createAnotherTest() {
return new Test() {
@Override
public void doSomething() {
System.out.println("Ok");
}
};
}
public static void main(String[] args) {
Test t = createTest();
System.out.println(t.getClass().getName());
t = createAnotherTest();
System.out.println(t.getClass().getName());
}
问题内容: 这可能是一个非常幼稚的问题。 我曾经相信Java 中的a 总是 包含堆栈跟踪。这是正确的吗? 现在看起来我捕获了 没有 堆栈跟踪的异常。是否有意义?是否 可以 在没有堆栈跟踪的情况下捕获异常? 问题答案: 无需堆栈跟踪就可以捕获Java中的Throwable对象: 构造一个具有指定详细消息,原因,启用或禁用原因,启用或禁用 可写堆栈跟踪 的新throwable 。 填写执行堆栈跟踪。此
现在看来,我在没有堆栈跟踪的情况下捕获异常。有道理吗?是否有可能在没有堆栈跟踪的情况下捕获异常?
问题内容: 如何将异常的堆栈跟踪信息打印到stderr以外的流上?我发现的一种方法是使用getStackTrace()并将整个列表打印到流中。 问题答案: 可以接受or或参数: 也就是说,请考虑将SLF4J之类的记录器接口与LOGBack或log4j之类的记录实现一起使用。
异常对象的 printStackTrace() 方法用于打印异常的跟踪栈信息,根据 printStackTrace() 方法的输出结果,开发者可以找到异常的源头,并跟踪到异常一路触发的过程。 看下面用于测试 printStackTrace 的例子程序。 上面程序中 main 方法调用 firstMethod,firstMethod 调用 secondMethod,secondMethod 调用 t
Edit2 @Paradematic在建议重定向而不是抛出异常方面做得很好;这解决了日志记录问题。Play 2中的问题是,重定向需要发生在所谓的范围内,而日期解析器调用并不总是这样。 最初的 有一个问题,即我的application.log被与uri日期解析器操作相关的错误填满,如果给定有效的uri日期,该操作应该成功。 然而,一些用户试图通过输入无效日期来规避这一点,希望获得免费访问付费订阅者专
我试过大多数设置日志记录/应用程序洞察遥测的组合,下面是我试过的一些东西: 的 方法中的 将添加到中的日志生成器 删除自定义错误页异常处理程序,以防发生影响事件 我在Azure中的Web应用程序上设置了环境变量。 我正在使用以下代码生成应用程序洞察中的异常: 一切都不起作用了,我快疯了!非常感谢任何帮助。