java - 打印线程池线程抛出的异常,Java 的默认行为

标签 java concurrency

我问了这个问题:Printing the stack trace from a newly created thread when an unchecked exception is thrown in Eclipse

并在用户 Gray 的回复中得到了这个:“默认情况下,没有任何东西可以打印线程池线程抛出的异常。”

我想知道这是为什么。让线程池线程抛出未经检查的异常并在默认情况下不打印任何错误而停止工作对我来说似乎令人困惑。

最佳答案

因为如果它打印它,另一个开发人员会问为什么它会用不需要的堆栈跟踪削弱程序的输出,并通过将堆栈跟踪写入同步 PrintStream 来大幅降低吞吐量。如果您希望打印异常,请自行打印。没有什么能阻止你这样做。

你得到的答案显示了如何做到这一点。您还可以使用另一个可捕获运行时异常的可运行对象包装所有可运行对象,在抛出异常时打印它们,然后重新抛出它们。

关于java - 打印线程池线程抛出的异常,Java 的默认行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16978705/

相关文章:

java - Appium-如何使用Java从iOS设备读取日志

java - JSP 文件是否需要在 web.xml 中输入

java - 你如何获得 "ignore"java.util.concurrent.Future 对象?

java - Java中是否有任何(无限制的)公平阻塞队列?

http - 为什么浏览器会限制每个域的并发请求数?

postgresql - 将列从 timestamp 更改为 timestamptz 会锁定表吗?

java - 将 DefaultListModel 编码到 xml

java - Activity 和 fragment 的不同 onBackPressed

java - 现代文本编辑器中的片表和绳索的内存管理

c++ - 项目中共享模型的多线程同步