如何让ruby在线程内输出异常?

时间:2010-08-02 19:02:25

标签: ruby multithreading exception-handling

当我使用Thread.new {}生成一个线程时,看起来在该线程中发生的任何异常都看不到白昼,应用程序只是静静地忽略它

2 个答案:

答案 0 :(得分:3)

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

但是,虽然我从未使用它们,但Thread类有几个abort_on_exception方法,即使有一些例子。他们应该做你想做的事 http://corelib.rubyonrails.org/classes/Thread.html

答案 1 :(得分:3)

添加到Nikita的答案中,您还可以通过在您生成的主题上调用thread.join来触发异常。

如果在(ruby -d)上运行带有debug标志的程序,那么当线程中出现未处理的异常时,你也会中止。