Как да обработваме лесно изключения в C++

Kak Da Obrabotvame Lesno Izklucenia V C



Неочакваните събития, които се случват, докато програмата работи, се наричат ​​​​изключения или грешки. Изключения възникват по време на изпълнение и не могат да бъдат уловени по време на компилация, така че могат да причинят сериозни проблеми в програмата. Добре обработването на изключения в програма на C++ е основна цел за програмиста да получи желаните резултати.

Как да обработваме лесно изключения в C++

Обработката на изключения в C++ се отнася до механизма за откриване на грешки по време на изпълнение и ефективното им обработване, като обработка на невалидни входове, деление на число на нула при операции за деление и много други.

Обработката на изключения в C++ включва три ключови думи: try, throw и catch. Инструкцията try позволява на потребителя да дефинира блока от код, който може да предизвика изключение в кода. Ключовата дума throw хвърля изключение, ако бъде открито след проверка на блока под ключовата дума try. Ключовата дума catch съдържа блока от код, който може да обработва изключението, наблюдавано в блока try.







Пример 1: Обработка на изключения по време на разделяне

Кодът е написан за проверка на изключенията по време на разделяне.



#include
използвайки пространство от имена std ;

вътр основен ( ) {

двойно числител, знаменател, деление ;

cout << „Въведете числителна стойност:“ ;
храня се >> числител ;

cout <> знаменател ;

опитвам {


ако ( знаменател == 0 )
хвърлям 0 ;


разделение = числител / знаменател ;
cout << числител << '/' << знаменател << ' = ' << разделение << endl ;
}

улов ( вътр брой_изключение ) {
cout << „Грешка! Делителят не може да бъде  “ << брой_изключение << endl ;
}

връщане 0 ;
}

В тази програма потребителят въвежда стойността на числителя и знаменателя, декларирани в секцията main(). В блока try се използва оператор if за проверка на изключението, което е дали знаменателят е нула или не. Тъй като делението не може да бъде извършено с делител на нула, ако се установи, че знаменателят е 0, то ще хвърли изключение и блокът catch ще върне аргумент за грешка, в противен случай се изпълнява простата операция за деление.







Потребителят въвежда числител 42 и 0 в знаменателя, което хвърля изключение, така че програмата връща аргумента за грешка.



Потребителят въвежда числител 42 и 2 като знаменател, тъй като не е намерено изключение, резултатът след делението се връща.

Пример 2 Обработка на изключения за проверка на възрастта

Тази програма проверява изключенията във възрастта на потребителя.

#include
използвайки пространство от имена std ;

/*
Тук искаме да хвърлим изключение (възраст като изключение), ако възрастта на лицето е под 18 години.
*/

вътр основен ( )
{
// проверка дали възрастта е над 18 години в пробния блок.
опитвам
{
вътр възраст ;
cout << „Въведете възрастта си за достъп:“ ;
храня се >> възраст ;

ако ( възраст >= 18 )
{
cout << „Достъпът е предоставен.“ ;
}
// персонализирано изключение се хвърля, ако възрастта е под 18.
друго
{
хвърлям ( възраст ) ;
}
}
// прихващане на хвърленото изключение и показване на желания изход (достъпът отказан!)
улов ( вътр х )
{
cout << „Достъпът е отказан! Вие сте непълнолетен.“ << endl ;
}
връщане 0 ;
}

В тази програма се дефинира променлива с цяло число. Потребителят е помолен да въведе възрастта и да опита блокови проверки, ако възрастта на потребителя е над или равна на 18. Ако не е вярно, тогава той хвърля изключение и блокът за изключение ще върне Достъпът е отказан! Аргумент. В противен случай достъпът ще бъде предоставен.

Потребителят въвежда възрастта да бъде 12, за да провери разрешението за достъп, тъй като тази възраст е под 18, така че се връща аргументът Отказан достъп.

Потребителят въвежда възраст 20, тъй като това е над 18, така че достъпът се предоставя на потребителя.

Забележка : Ако в програмата няма catch блок, тогава програмата ще се държи необичайно и ще прекрати неочаквано в случай на изключения.

Заключение

Обработката на изключения в C++ се отнася до механизма за откриване на грешки по време на изпълнение и ефективното им обработване. Включва три ключови думи опитвам, хвърлям и хващам. Изключението се проверява за кода в блока try, ключовата дума throw хвърля изключението, ако бъде намерено, а блокът catch обработва изключението, хвърлено за блока try. Обработката на изключения прави потребителското изживяване гладко и страхотно, като избягва грешки по време на изпълнение.