问题标签 [printstacktrace]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1374 浏览

java - 为什么 printStackTrace() 和其他方法之间的执行顺序似乎是不确定的?

在我下面的代码片段中,该printStackTrace()方法在catch block. 运行程序后可以看到有时会printStackTrace()连续运行多次,而不是按照printStackTrace()--> catch block-->的顺序运行finally block

如果更改为static boolean bfalse则按System.out.print(e)顺序执行。

那么为什么会有printStackTrace()不同的行为方式呢?(线程的东西??)

0 投票
1 回答
520 浏览

java - 将调用者线程的堆栈跟踪附加到正在创建的新线程中,以便于调试

我在调试时经常遇到问题。

有时线程结束时会抛出异常。

这个问题的原因是线程的调用者/启动者。

调用者发送不正确的参数或调用线程而不初始化某些东西。

为了找到调用特定线程的位置,需要付出一些额外的努力,因为堆栈跟踪是无用的。

如果我们可以将调用者线程的堆栈跟踪附加到被调用线程中会怎样。

考虑以下示例:

输出

期望的输出


编辑:这是与@peter-lawrey 讨论后获得的解决方案

0 投票
0 回答
215 浏览

java - Java:Executor、FutureTask、Unsafe.unpark - 如何防止 printStackTrace?

在 Java 中,我使用 FutureTask 通过 Executor 异步运行 Callable。为了检查调用线程是否发生错误,我需要从 Callable 中抛出潜在的异常。但是,这会导致堆栈跟踪打印到 System.out(我已调试,这发生在 LockSupport.unpark(Thread) 的 Unsafe.unpark(Thread) 内部)。

有什么想法可以防止这种情况吗?

我之前(通过 SLF4J)已经将异常记录到真正的记录器中,并且从不希望在 System.out 上直接堆栈跟踪。

更新:我想我已经指出了相关信息,但要澄清所有问题:这个测试用例可以重现问题(方法 testTransferStreamAsyncCallbackFail()): https ://github.com/mmm/util/blob/master/io/ src/test/java/net/sf/mmm/util/io/base/StreamUtilTest.java

使用的实现是这样的:

我通过 eniter 代码进行了调试,它绝对不是我的代码记录到控制台。正如我试图解释的那样,这是在 JDK 中完成的。

附加更新以回答问题:

我正在使用的执行器是 Executors.defaultThreadFactory() 正如您在此处看到的: https ://github.com/mmm/util/blob/master/core/src/main/java/net/sf/mmm/util/concurrent /base/SimpleExecutor.java#L30 https://github.com/mmm/util/blob/master/io/src/main/java/net/sf/mmm/util/io/base/StreamUtilImpl.java#L165

输出是我在测试中从 Callable 中抛出的异常的堆栈跟踪:

0 投票
1 回答
4957 浏览

java - 为什么一些堆栈跟踪在java中没有行号

我有一个来自客户的错误,当我查看日志时,我们跟踪异常,一些堆栈跟踪没有行号:

请注意:我已将包名称替换为“xx”),并且所有类和方法都在我们的应用程序中定义:

完整的堆栈跟踪如下:

我对为什么会发生这种情况感兴趣?我的客户是否有可能对现有代码(自定义)做一些事情?

0 投票
1 回答
328 浏览

java - 我们应该记录托管异常的堆栈跟踪吗?

我对这个主题进行了很多研究,但没有找到真正的答案。

尝试想象一个执行多线程调用 Callable 的程序。为此,我们启动一个具有特定超时的 ExecutorService 来调用所有进程。

所以我们有一个带有多个异常的 try...catch 块:

  • CancellationException 超时
  • ExecutionException 如果在线程中引发异常
  • 突然停止的 InterruptedException...

哲学是只记录消息,还是记录消息和可抛出的(所以堆栈跟踪)?

总结一下,我们应该这样做:

还是只记录消息错误?

stacktrace 是否被认为只出现在错误中?

谢谢你。

0 投票
2 回答
1391 浏览

log4j - 调用 Logger.error(String, Throwable) 时的 EasyMock AssertionError

当我在调用 Log4j.error 方法时包含一个 Throwable 时,我看到了断言错误。我在@PreparateForTest 块中有Logger.class、PrintWriter.class、AuthenticationException.class。如果我没有将 Throwable 作为参数传递,我看不到错误。

我在正确设置模拟时缺少什么?

JUnit 测试代码片段如下:

导致问题的代码片段如下:

0 投票
1 回答
361 浏览

java - 有没有办法在重定向到错误页面(在 Java 中)之前捕获错误的堆栈跟踪?

当我的 Spring MVC 应用程序发生错误时,我想发送一封电子邮件,其中包含导致错误的代码的堆栈跟踪。

我正在使用@ControllerAdviceand@ExceptionHandler注释重定向到一个方法,该方法将输出异常的堆栈跟踪并通过电子邮件发送该信息。但是,堆栈跟踪信息是针对在错误处理程序中执行的代码,而不是来自导致错误的代码。

这是错误处理程序中输出堆栈跟踪等的代码。

这将导致以下输出:

但我希望这个输出(这是控制台中显示的内容):

0 投票
0 回答
135 浏览

javascript - 没有在角度控制器内的 IE 中获取 javascript exception.stack

我正在构建一个有角度的 Web 应用程序,我想将任何 javascript 异常和调用堆栈从客户端发送到服务器以进行日志记录。在 chrome 和 firefox 中,我可以通过查看 exception.stack 属性来获取调用堆栈,但是在使用 IE 时该值不可用。这是我的角度控制器的代码示例:

这是来自 chrome 的 exception.stack:

这对调试很有帮助。但是当错误发生在角度控制器内部时,IE 没有 extension.stack 属性。

但是,如果我在 IE 不在角度控制器内时强制执行相同的错误,那么 exception.stack 会有一个值。这是该代码的示例:

在 IE 中,exception.trace 如下:

我也尝试使用 stacktrace.js 从 IE 获取调用堆栈,但是这个库依赖于存在的 exception.stack 值。

有人可以帮我理解为什么在角度控制器内部时这会有所不同,以及如何从角度控制器内部的 IE 获取堆栈跟踪?

谢谢

0 投票
3 回答
701 浏览

exception - printStackTrace() 的奇怪行为

printStackTrace()就好像它在等待输入后在自己的线程中运行一样。这是我的代码:

我有时会得到预期的输出(STUFF最后是),但有时我会得到这个:

有时是这样的:

更换扫描仪System.in.read()产生相同的结果。完全删除这条线会产生预期的结果。在我注意到这个问题的实际程序中,堆栈跟踪要长得多,并且STUFF输出总是按预期出现或出现在上面的第二个输出中 - 在第二行的开头。

这是什么原因造成的,我该如何解决?

0 投票
1 回答
2249 浏览

java - 与 Android 中的 e.printStackTrace() 混淆

我在这里读到不e.printStackTrace()应该用于在 android 上捕获异常。

在另一个来源我读到我应该使用Log.e()而不是e.printStackTrace()

我是否必须在发布版本中手动删除这些调用?在 Android 中跟踪异常日志的最佳做法是什么?