Исключения С++
Исключения С++
При выполнении кода C++ могут возникать различные ошибки: ошибки кодирования, допущенные программистом, ошибки из-за неправильного ввода или другие непредвиденные вещи.
При возникновении ошибки C++ обычно останавливается и генерирует сообщение об ошибке. Технический термин для этого: C++ выдаст исключение (выдаст ошибку).
С++ попробуй и поймай
Обработка исключений в C++ состоит из трех ключевых слов : try
и :throw
catch
Оператор try
позволяет определить блок кода, который будет проверяться на наличие ошибок во время его выполнения.
Ключевое throw
слово вызывает исключение при обнаружении проблемы, что позволяет нам создать пользовательскую ошибку.
Оператор catch
позволяет определить блок кода, который будет выполняться, если в блоке try произойдет ошибка.
Ключевые слова try
и catch
идут парами:
Пример
try {
// Block of code to try
throw exception;
// Throw an exception when a problem arise
}
catch () {
// Block of code to handle errors
}
Рассмотрим следующий пример:
Пример
try {
int age = 15;
if (age >= 18) {
cout << "Access granted - you are old enough.";
} else {
throw (age);
}
}
catch (int
myNum) {
cout << "Access denied - You must be at least 18 years
old.\n";
cout << "Age is: " << myNum;
}
Объяснение примера
Мы используем try
блок для тестирования некоторого кода: если age
переменная меньше 18
, мы создадим throw
исключение и обработаем его в нашем catch
блоке.
В catch
блоке мы ловим ошибку и что-то с ней делаем. Оператор catch
принимает параметр : в нашем примере мы используем int
переменную ( myNum
) (поскольку мы выбрасываем исключение int
типа в try
блоке ( age
)), чтобы вывести значение age
.
Если ошибки не возникает (например, если age
вместо 20
, 15
то это означает, что оно будет больше 18), catch
блок пропускается:
Пример
int age = 20;
Вы также можете использовать throw
ключевое слово для вывода ссылочного номера, например, пользовательского номера/кода ошибки для целей организации:
Пример
try {
int age = 15;
if (age >= 18) {
cout << "Access granted - you are old enough.";
} else {
throw 505;
}
}
catch (int myNum) {
cout << "Access denied - You must be at least 18 years old.\n";
cout << "Error number: " << myNum;
}
Обработка любых типов исключений (...)
Если вы не знаете throw
тип , используемый в try
блоке, вы можете использовать синтаксис "три точки" ( ...
) внутри catch
блока, который будет обрабатывать исключения любого типа:
Пример
try {
int age = 15;
if (age >= 18) {
cout << "Access granted - you are old enough.";
} else {
throw 505;
}
}
catch (...) {
cout << "Access denied - You must be at least 18 years
old.\n";
}