并且在用户 Gray 的回复中得到了这个:“默认情况下,没有任何东西可以打印线程池线程抛出的异常。”
我想知道为什么会这样。默认情况下,让线程池线程抛出未经检查的异常并停止工作而不打印任何错误似乎让我感到困惑。
并且在用户 Gray 的回复中得到了这个:“默认情况下,没有任何东西可以打印线程池线程抛出的异常。”
我想知道为什么会这样。默认情况下,让线程池线程抛出未经检查的异常并停止工作而不打印任何错误似乎让我感到困惑。
必须更改程序,例如 Thread 有一个set(Default)UncaughtExceptionHandler。使用 AOP 可以实现这样的事情。
因为如果它打印它,另一个开发人员会问为什么它会使用不需要的堆栈跟踪来削弱程序的输出,并通过将堆栈跟踪写入同步的 PrintStream 来大大降低吞吐量。如果要打印异常,请自行打印。没有什么能阻止你这样做。
你得到的答案显示了如何做到这一点。您还可以使用另一个可捕获运行时异常的可运行程序包装所有可运行程序,在它们被抛出时打印它们,然后重新抛出它们。