`throw 1` в C ++ - PullRequest
       9

`throw 1` в C ++

0 голосов
/ 17 января 2020

Я пару примеров C ++, которые я видел throw 1 в catch блоке. Пытался выяснить, что это может быть, но всегда находил классический пример с объектом исключения или перебрасыванием исключения без каких-либо аргументов.

Также иногда я могу найти в Inte rnet другие примеры, также без объяснений:

throw 1
throw 2
throw -1

Скажите, пожалуйста, что это может значить.

Ответы [ 2 ]

3 голосов
/ 17 января 2020

Скажите, пожалуйста, что это может означать.

Это означает, что вы бросаете значение типа int, которое имеет значение 1, 2 или -1.

Конечно, без каких-либо дополнительных подробностей трудно определить значение этого.

В качестве варианта использования можно сообщить код ошибки из функции:

int returning_error_code() {
    try {
        stuff();
    } catch (int e) {
        return e; // return error code
    }

    return 0; // no error
}
2 голосов
/ 17 января 2020
throw 1
throw 2
throw -1

Скажите, пожалуйста, что это может означать.

throw бросает объект. throw 1 выбрасывает объект, если введите int со значением 1. Я предполагаю, что читатель может экстраполировать, что означают два других.

Это механизм исключения. Брошенный объект может быть пойман:

try {
    throw 1;
} catch (int e) {
    std::cout << "an integer was thrown and caught. here is the value: " << e;
}

Я видел throw 1 в catch блоке.

Бросок внутри обработчика исключений разрешен. Он имеет то же поведение, что и выброс вне обработчика.

всегда находил классический пример с объектом исключения или перебрасывал исключение без каких-либо аргументов.

Это случай выброса объект исключения.

Нет ограничений по типу объектов, которые могут быть выброшены. Стандартная библиотека следует соглашению о выбросе только классов, полученных из std::exception. Рекомендуется следовать этому соглашению в пользовательских программах.

...