なひです. > From: KIMURA Koichi [mailto:kimura / sqa.canon.co.jp] > Sent: Thursday, March 25, 1999 3:28 PM > >> >Windows版RubyやPerlで, > >> >例えばOSからFloat Divide by Zeroが上がってきたら, > >> >誰が処理してどうなるんでしょう. > >> > >> Ruby mswin32版で実行中に^Cを押したのと同様に、Windowsのエラーダ > >> イアログが出てくるのではないかと。つまり、トップレベル(という語 > >> で良いか?)まできてしまうのではないでしょうか。 > > > >ということですので,誰もcatchせずにRubyまで上がってきて, > >正しくensure等が実行される,ということなのでしょうか... > > ということで良いと思います。mswin32版 Rubyではsignalを使ってこの > 種の例外を補足していて、Win32ネイティブの例外処理は使っていない > ということになります。 試しに先ほどCygwin32版ruby (rbgw123.zip based on ruby-1.2.3.tar.gz)をインストールしてみて, bash上で ruby -e 'begin sleep 10; ensure p "ensure!"; end' とかして,途中で^Cを押してみたら...ensureされませんでした. つまり^Cを押された時にWin32が投げようとする構造化例外を, 誰もcatchする(正確には__exceptする)人が居ないので (もちろんrubyもcatchしない),Win32は投げるに投げられず, そのまま止まってしまう,と. 結局UNIXと状況は同じなのですね...で,いいのかしら.^^;