Class: SystemExit (Ruby 2.3.4)

    In Files

    • error.c

    Parent

    Class/Module Index [+]

    Quicksearch

    SystemExit

    Raised by exit to initiate the termination of the script.

    Public Class Methods

    new → system_exit click to toggle source
    new(status) → system_exit
    new(status, msg) → system_exit
    new(msg) → system_exit

    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.

     
                   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_ivar_set(exc, id_status, status);
        return exc;
    }
                

    Public Instance Methods

    status → fixnum click to toggle source

    Return the status value associated with this system exit.

     
                   static VALUE
    exit_status(VALUE exc)
    {
        return rb_attr_get(exc, id_status);
    }
                
    success? → true or false click to toggle source

    Returns true if exiting successful, false if not.

     
                   static VALUE
    exit_success_p(VALUE exc)
    {
        VALUE status_val = rb_attr_get(exc, id_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;
    }