From: Yusuke Endoh Date: 2012-07-02T20:01:20+09:00 Subject: [ruby-dev:45892] Re: Question: Thread#kill doesn't throw Exception 遠藤です。 2012/06/26 SASADA Koichi : > (2012/06/26 4:51), KOSAKI Motohiro wrote: >> 例外だと握りつぶせますけど、そこで kill >> したつもりのスレッドが生き残ってしまって誰が嬉しいんだっけという話だと思います。個人的には例外にしてしまうとたぶん壊れるコードが出てくるので変えたくないなあ。 >> >  そうですよね.1.8 もそうだし,ここは変えないということで. その特殊な Object の意図はおそらく「握りつぶされたくない」だと 思うのですが、しかし実際には ensure を使えば握りつぶせます。 th = Thread.new do begin begin sleep 1 ensure p $! raise end rescue retry end end sleep 0.5 th.kill $ ruby t.rb nil nil nil ... (繰り返す、^C で止められない) かといって、この挙動を変えるべきではないと思います。 ensure が実行されないとリソースのリークやデータの欠損が発生 しかねないと思うので。 -- Yusuke Endoh