Tag: multithreading

处理Ruby线程中引发的exception

我正在寻找一个经典的exception处理问题的解决方案。 考虑以下代码: def foo(n) puts ” for #{n}” sleep n raise “after #{n}” end begin threads = [] [5, 15, 20, 3].each do |i| threads < e puts “EXCEPTION: #{e.inspect}” puts “MESSAGE: #{e.message}” end 此代码在5秒后捕获exception。 但是如果我将数组更改为[15, 5, 20, 3] ,则上面的代码会在15秒后捕获exception。 简而言之,它始终捕获第一个线程中引发的exception。 任何想法,为什么如此。 为什么不在每次3秒后捕获exception? 如何通过任何线程捕获第一个引发的exception?