2014-10-09 48 views
1

在我的JavaFX 8应用程序中,我有一个运行循环并偶尔更新UI的线程。在这个线程的某处,有一个例外会导致我的悲伤。发现它不会是一个问题,除了工作线程上的异常似乎没有记录到System输出与主程序线程上的输出相同。我的意思是,当我运行程序时,如果main()中断了,IntelliJ会将异常消息和堆栈跟踪打印到运行视图(标准输出,AFAIC)。另一方面,如果在我的线程中发生什么事情,我不会得到相同的详细输出。事实上,大多数时候,我什么都没有得到 - 只是一个神秘的非功能性项目。JavaFX:线程异常未记录到系统输出

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

+0

你能在这里发布代码和堆栈跟踪错误吗? – 2014-10-09 05:37:18

+0

根据您的线程模型,异常不会传播到主线程,它们只会杀死它们抛出的线程。启动线程时,您可能会尝试将try/catch添加到“run”方法中。 – 2014-10-09 06:39:50

+0

@SamuelÅslund你是对的。我尝试添加try/catch到线程任务,并开始看到异常。随着一些更多的搜索,我发现这是某些Runnables的默认行为。我不清楚它为什么这样工作,但至少现在我可以继续调试。谢谢! – user1202809 2014-10-09 15:56:44

回答

0

(我猜你的答案/评论意味着我应该把我的意见变成一个答案。)

根据您的线程模型的异常不会传播到主线程,他们只是杀了他们是从抛出线程。启动线程时,您可以从try/catch中添加try/catch方法。

1

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

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

+0

我会接受这个答案并在2天内关闭此问题。 – user1202809 2014-10-09 16:00:08