なかだです。 At Sun, 17 Mar 2002 14:27:33 +0900, Kazuhiro NISHIYAMA wrote: > abortの場合、$!.messageは"exit"よりも"abort"の方がいいと思います。 > > % ruby17 -S irb > ruby 1.7.2 (2002-03-15) [i686-linux] > irb(main):001:0> begin;abort;rescue Exception;p $!;end > #<SystemExit: exit> > nil > irb(main):002:0> こういうこと? $ ./i686-linux/miniruby -e 'begin;abort;rescue Exception;p $!;end' #<SystemExit: abort>
Index: eval.c =================================================================== RCS file: /cvs/ruby/src/ruby/eval.c,v retrieving revision 1.272 diff -u -2 -p -r1.272 eval.c --- eval.c 2002/03/14 06:23:43 1.272 +++ eval.c 2002/03/17 06:19:49 @@ -3446,7 +3446,10 @@ rb_mod_method_defined(mod, mid) } -void -rb_exit(status) +static void NORETURN(rb_system_exit _((int, const char *))); + +static void +rb_system_exit(status, message) int status; + const char *message; { if (prot_tag) { @@ -3454,5 +3457,5 @@ rb_exit(status) exit_status = status; - exit = rb_exc_new2(rb_eSystemExit, "exit"); + exit = rb_exc_new2(rb_eSystemExit, message); rb_iv_set(exit, "status", INT2NUM(status)); rb_exc_raise(exit); @@ -3462,4 +3465,11 @@ rb_exit(status) } +void +rb_exit(status) + int status; +{ + rb_system_exit(status, "exit"); +} + static VALUE rb_f_exit(argc, argv, obj) @@ -3482,4 +3492,6 @@ rb_f_exit(argc, argv, obj) } +static void NORETURN(rb_abort _((void))); + static void rb_abort() @@ -3488,5 +3500,5 @@ rb_abort() error_print(); } - rb_exit(1); + rb_system_exit(1, "abort"); } @@ -3505,5 +3517,5 @@ rb_f_abort(argc, argv) rb_scan_args(argc, argv, "01", &mesg); rb_io_puts(argc, argv, rb_stderr); - exit(1); + rb_system_exit(1, "abort"); } return Qnil; /* not reached */
-- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦