【发布时间】:2015-03-14 00:28:30
【问题描述】:
为什么线程的行为与 ruby 中的其他所有内容不同? 我需要在不同的线程中运行一些代码,而不是让它们在每次意外发生时都消失得无影无踪。
Thread.new do
begin
raise "Exception"
rescue => exc
print exc
end
end
# Nothing happens
出于某种原因,这段代码什么也没做。在此之前我尝试使用Thread::abort_on_exception = true,并没有改变任何事情。
那么,如何正确处理 ruby 线程中的异常?
【问题讨论】:
-
您发布的代码在 IRB 中对我来说很好用。我怀疑问题是您的程序在新线程完成执行之前终止。
-
异常中止什么都不做,因为它不会引发异常。如果你真的希望它 abort_on_exception 要么不在线程内处理它们,要么在处理后重新引发它们。
标签: ruby multithreading exception-handling