JavaFX:线程上的异常未记录到系统输出

时间:2014-10-09 05:29:43

标签: java multithreading intellij-idea javafx

在我的JavaFX 8应用程序中,我有一个运行循环的线程,偶尔会更新UI。在这个帖子的某个地方,有一个例外让我感到悲痛。发现它不会有问题,除了工作线程上的异常似乎没有记录到System输出与主程序线程上的相同。

我的意思是,当我运行程序时,如果main()中出现问题,IntelliJ会将异常消息和堆栈跟踪打印到Run视图(标准输出,AFAIC)。另一方面,如果我的线程出现问题,我就不会得到相同的详细输出。事实上,大多数时候,我根本没有得到任何东西 - 只是一个神秘的无法运作的程序。

我需要采取另一个步骤来捕获工作线程中的错误吗?我的环境配置错误了吗?这使调试几乎不可能 - 任何帮助赞赏!

2 个答案:

答案 0 :(得分:1)

在塞缪尔的评论和一些搜索之间,我得到了答案; Runnables倾向于消耗他们的错误,因此他们永远不会被抛到主线程。这意味着没有错误处理,它们就会消失并且线程被破坏。

我的解决方案是在我的任务中添加try / catch块。这是我现在所期望的倾销错误。

答案 1 :(得分:0)

(我想您的回答/评论意味着我应该将我的评论转化为答案。)

根据您的线程模型,异常不会传播到主线程,它们只会杀死它们被抛出的线程。在启动线程时,可以通过在“run”方法中添加try / catch来获益。