Исключения в C++ как и в других языках программирования - это некое действие которое произойдет в нестандартной ситуации. Такая ситуация может быть как вызвана ошибкой, например, делением на ноль или нехваткой памяти, так и введена искусственно, реагируя на определенные события в программе. Рассмотрим пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
try { if (a == 0) { throw "деление на 0"; } if (b == 0) { throw "нулевое значение"; } cout << b/a << endl; } catch(char *str) { cout << str << endl; } |
Основные ключевые операторы исключений это try, catch и throw. Try объявляет начало части кода, где может произойти ситуация, ведущая к исключению. В нашем случае, это 2 условия и вывод результата b/a. Catch блок, который выполняется, если происходит исключение. В примере выше такой блок принимает строку из try и выводит на экран. И передающая конструкция throw, она указывает, что передавать в случае возникновения исключения из try в catch. В примере это строка, конкретизирующая ошибку.
Так же в C++ есть возможность создавать исключения. Благодаря этому можно более точно расписать действия программы, задать несколько вариантов реакции программы на различные исключения. Благодаря наследованию, создание таких исключений довольно просто.
1 2 3 |
class mEn : public std::exception {…} throw mEn( "Exception 1" ); |