まつもと ゆきひろです

In message "[ruby-dev:12783] $SAFE=4;raise SystemExit"
    on 01/04/05, Kazuhiro NISHIYAMA <zn / mbf.nifty.com> writes:

|safe levelが4の時にabortやexitやexit!では終了できないのに
|raise SystemExitで終了できてしまいます。

別に$SAFE=4では終了できちゃいけないわけじゃないんです。ただ、
$SAFE=4のスレッドからそうでないスレッドも含めて終了できちゃ
まずいだけで。だから、たとえば

  Thread.start{$SAFE=4; raise SystemExit}

では

  -e:1:in `start': Insecure exit at level 4 (SecurityError)

になるはずです。「はずです」というのは、やっぱりバグがあって
うまく動かなかったので。あわてて直します。

「それならばexitもノーチェックでよいのでは」という意見もある
でしょうが、まあ、exitってのはSystemExitを送るというよりはや
はりインタプリタ全体を終了させるってイメージが強いので、禁止
しておいた方が分かりやすかろうという配慮です。

                                まつもと ゆきひろ /:|)