Основные понятия обработки ошибок
Ошибки в программах могут возникать из-за различных причин: некорректных входных данных, нехватки памяти или аппаратных сбоев. Для их корректного выявления и устранения используется механизм обработки ошибок.
Исключение
Это специальный объект, который передается от места возникновения ошибки до обработчика исключений. В языке С++ исключение объявляется с помощью ключевого слова throw.
\text{throw } \text{{тип_исключения}}();
Обработчик исключений
Обработчики исключений позволяют программистам реагировать на возникновение ошибок. Они определяются с использованием блока try, за которым следует блок catch, принимающий конкретный тип исключения.
`` try { // код, который может вызвать ошибку } catch (тип_исключения &e) { // обработка ошибки } ``
Типы ошибок и способы их обработки
В зависимости от причины возникновения ошибки различают несколько типов:
Ошибка ввода-вывода (
std::ios_base::failure).Ошибка деления на ноль (
std::domain_error).Недопустимое значение переменной (
std::invalid_argument).
Примеры обработки ошибок
Пример использования try-catch
```cpp #include <iostream> using namespace std;
int main() { int a = 0, b = 10;
try { if (a == 0) throw domain_error("Деление на ноль!");
cout << "Результат: " << b / a << endl; } catch (const domain_error& e) { cerr << "Ошибка: " << e.what() << endl; }
return 0; } ```
Проверка правильности ввода пользователя
Часто требуется проверять вводимые пользователем данные. Например, можно использовать функцию std::stoi() для преобразования строки в целое число.
`` try { string input = "abc"; int number = stoi(input); } catch (const invalid_argument&) { cout << "Некорректный ввод!" << endl; } ``