如何让Ruby在线程中输出异常?

7
当我使用Thread.new{}来生成一个线程时,似乎在该线程中发生的任何异常都不会被捕获,应用程序会静默地忽略它。
2个回答

3

通常情况下,线程彼此隔离,因此一个线程中的异常不会终止整个应用程序。

但是,虽然我从未使用过它们,Thread类有几个abort_on_exception方法,甚至带有一些示例。它们应该能够达到您想要的效果。
http://corelib.rubyonrails.org/classes/Thread.html


3

除了Nikita的答案之外,你也可以通过在生成的线程上调用thread.join来触发异常。

如果使用调试标志运行程序(ruby -d),则在线程中引发未处理异常时也会中止程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接