なひです.

> 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と状況は同じなのですね...で,いいのかしら.^^;