класс SystemExit
Вызывается exit для инициирования завершения скрипта.
Публичные методы класса
new → system_exit Показать исходный код
new(status) → system_exit
new(status, msg) → system_exit
new(msg) → system_exit
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;
} Создаёт новое SystemExit исключение с заданным статусом и сообщением. Статус может быть true, false или целым числом. Если статус не указан, используется true.
Публичные методы экземпляра
status → fixnum Показать исходный код
static VALUE
exit_status(VALUE exc)
{
return rb_attr_get(exc, id_status);
} Возвращает значение статуса, связанное с этим выходом из системы.
success? → true or false Показать исходный код
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;
} Возвращает true если выход успешный, false если нет.
Ruby Core © 1993–2017 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.