Exception: SystemExit

Inherits:
Exception show all
Defined in:
error.c,
error.c

Overview

Raised by exit to initiate the termination of the script.

Instance Method Summary collapse

Methods inherited from Exception

#==, #backtrace, #backtrace_locations, #cause, #exception, exception, #inspect, #message, #set_backtrace, #to_s

Constructor Details

#newObject #new(status) ⇒ Object #new(status, msg) ⇒ Object #new(msg) ⇒ Object

Create a new SystemExit exception with the given status and message. Status is true, false, or an integer. If status is not given, true is used.



882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
# File 'error.c', line 882

static VALUE
exit_initialize(int argc, VALUE *argv, VALUE exc)
{
    VALUE status;
    if (argc > 0) {
	status = *argv;

	switch (status) {
	  case Qtrue:
	    status = INT2FIX(EXIT_SUCCESS);
	    ++argv;
	    --argc;
	    break;
	  case Qfalse:
	    status = INT2FIX(EXIT_FAILURE);
	    ++argv;
	    --argc;
	    break;
	  default:
	    status = rb_check_to_int(status);
	    if (NIL_P(status)) {
		status = INT2FIX(EXIT_SUCCESS);
	    }
	    else {
#if EXIT_SUCCESS != 0
		if (status == INT2FIX(0))
		    status = INT2FIX(EXIT_SUCCESS);
#endif
		++argv;
		--argc;
	    }
	    break;
	}
    }
    else {
	status = INT2FIX(EXIT_SUCCESS);
    }
    rb_call_super(argc, argv);
    rb_iv_set(exc, "status", status);
    return exc;
}

Instance Method Details

#statusFixnum

Return the status value associated with this system exit.

Returns:



932
933
934
935
936
# File 'error.c', line 932

static VALUE
exit_status(VALUE exc)
{
    return rb_attr_get(exc, rb_intern("status"));
}

#success?Boolean

Returns true if exiting successful, false if not.

Returns:

  • (Boolean)

Returns:

  • (Boolean)


946
947
948
949
950
951
952
953
954
955
956
957
958
959
# File 'error.c', line 946

static VALUE
exit_success_p(VALUE exc)
{
    VALUE status_val = rb_attr_get(exc, rb_intern("status"));
    int status;

    if (NIL_P(status_val))
	return Qtrue;
    status = NUM2INT(status_val);
    if (WIFEXITED(status) && WEXITSTATUS(status) == EXIT_SUCCESS)
	return Qtrue;

    return Qfalse;
}