Класс invalid_argument
Класс invalid_argument является одним из стандартных классов исключений в C++.
Он наследуется от класса logic_error и используется для сигнализации
о том, что функции был передан аргумент с недопустимым значением.
Обычно это исключение выбрасывается, когда аргумент не соответствует
ожидаемому формату или диапазону, но не является выходом за границы
(для границ используется out_of_range). Конструктор класса
принимает строку с описанием ошибки, которую можно получить
с помощью метода what.
Синтаксис
class invalid_argument : public logic_error;
// Создание объекта исключения
invalid_argument(const string& what_arg);
invalid_argument(const char* what_arg);
Пример
Давайте рассмотрим простой пример, в котором функция
проверяет переданное ей число и выбрасывает исключение
invalid_argument, если число отрицательное:
#include <iostream>
#include <stdexcept>
using namespace std;
void checkNumber(int num)
{
if (num < 0) {
throw invalid_argument("Number cannot be negative");
}
cout << "Number is: " << num << endl;
}
int main()
{
try {
checkNumber(-5);
}
catch (const invalid_argument& e) {
cout << "Caught exception: " << e.what() << endl;
}
return 0;
}
Результат выполнения кода:
"Caught exception: Number cannot be negative"
Пример
Давайте рассмотрим пример, где мы пытаемся преобразовать строку в число, но строка содержит недопустимые символы:
#include <iostream>
#include <stdexcept>
#include <string>
using namespace std;
int stringToInt(const string& str)
{
if (str.empty() || str.find_first_not_of("0123456789") != string::npos) {
throw invalid_argument("Invalid string format for integer conversion");
}
return stoi(str);
}
int main()
{
try {
int res = stringToInt("12345abc");
cout << "Result: " << res << endl;
}
catch (const invalid_argument& e) {
cout << "Error: " << e.what() << endl;
}
return 0;
}
Результат выполнения кода:
"Error: Invalid string format for integer conversion"
Смотрите также
-
класс
logic_error,
который является базовым для логических ошибок -
класс
out_of_range,
который сигнализирует о выходе за пределы диапазона -
оператор
throw,
который используется для генерации исключений -
метод
what,
который возвращает описание ошибки