From: matz@... (Yukihiro Matsumoto) Date: 2001-04-05T23:11:41+09:00 Subject: [ruby-dev:12785] Re: $SAFE=4;raise SystemExit まつもと ゆきひろです In message "[ruby-dev:12783] $SAFE=4;raise SystemExit" on 01/04/05, Kazuhiro NISHIYAMA 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を送るというよりはや はりインタプリタ全体を終了させるってイメージが強いので、禁止 しておいた方が分かりやすかろうという配慮です。 まつもと ゆきひろ /:|)