Курс лекций мдк 01. 02 «Прикладное программирование» пм 01 «Разработка программных модулей программного обеспечения для компьютерных систем»



Download 350,99 Kb.
bet16/22
Sana08.12.2022
Hajmi350,99 Kb.
#881790
TuriКурс лекций
1   ...   12   13   14   15   16   17   18   19   ...   22
Bog'liq
lektsii pm01-1

Прототип функции

Идентификаторы, указанные в списке параметров прототипа (объявления) функции, имеют областью действия только прототип функции




Класс

Элементы структур, объединений и классов (за исключением статических элементов) являются видимыми лишь в пределах класса. Они образуются при создании переменной указанного типа и разрушаются при ее уничтожении.




Тема «Обработка исключительных ситуаций»

После того как вы создали и отладили (удалили ошибки) достаточное количество программ, вы уже способны предвидеть ошибки, которые могут встретиться в программе. Например, если ваша программа читает информацию из файла, ей необходимо проверить, существует ли файл и может ли программа его открыть. Аналогично, если ваша программа использует оператор new для выделения памяти, ей необходимо проверить и отреагировать на возможное отсутствие памяти. По мере увеличения размера





  • сложности программ необходимо включить много таких проверок по всей программе.

Основные концепции исключительных ситуаций:





  • Исключительная ситуация (exception) представляет собой неожиданное событие — ошибку — в программе.

35



  • В ваших программах вы определяете исключительные ситуации как классы.




  • Чтобы заставить ваши программы следить за исключительными ситуациями, необходимо использовать оператор C++ try.




  • Для обнаружения определенной исключительной ситуации ваши программы используют оператор C++ catch.




  • Для генерации исключительной ситуации при возникновении ошибки ваши программы используют оператор C++ throw.




  • Если ваша программа обнаруживает исключительную ситуацию, она вызывает специальную (характерную для данной исключительной ситуации) функцию, которая называется обработчиком исключительной ситуации.




  • Некоторые (старые) компиляторы не поддерживают исключительные ситуации C++.

Обработка исключений в С++ использует три ключевых слова: try, catch и throw. Те инструкции программы, где ожидается возможность появления исключительных ситуаций, содержатся в блоке try. Если в блоке try возникает исключение, т. е. ошибка, то генерируется исключение. Исклю-чение перехватывается, используя catch, и обрабатывается. Ниже это общее описание будет рассмотрено более подробно.


Инструкция, генерирующая исключение, должна исполняться внутри блока try. Вызванные из блока try функции также могут генерировать исключения. Всякое исключение должно быть перехвачено инструкцией catch, которая непосредственно следует за инструкцией try, сгенерировавшей исключение. Общая форма блоков try и catch показана ниже:




try {

  • блок try



catch (тип1 аргумент) {


// блок catch
catch (тип2 аргумент) {
// блок catch
catch (типЗ аргумент) {

  • блок catch

}
...
catch (типN аргумент) {

  • блок catch

}

Размеры блока try могут изменяться в больших пределах. Например, блок try может содержать несколько инструкций какой-либо функции, либо же, напротив, включать в себя весь код функции main(), так что вся программа будет охвачена обработкой исключений.


Когда исключение сгенерировано, оно перехватывается соответствующей инструкцией catch, обрабатывающей это исключение.


36

Одному блоку try может отвечать несколько инструкций catch, Какая именно инструкция catch исполняется, зависит от типа исключения. Это означает, что если тип данных, указанных в инструкции catch, соответствует типу данных исключения, то только эта инструкция catch и будет исполнена. Когда исключение перехвачено, arg получает ее значение. Перехваченным может быть любой тип данных, включая созданные программистом классы. Если никакого исключения не сгенерировано, то есть никакой ошибки не возникло в блоке try, то инструкции catch выполняться не будут.


Общая форма записи инструкции throw имеет вид:




throw исключение;

Инструкция throw должна выполняться либо внутри блока try, либо в функции, вызванной из блока try. В записанном выше выражении исключение обозначает сгенерированное значение.


Если генерируется исключение, для которого отсутствует подходящая инструкция catch, может произойти аварийное завершение программы. При


генерации необработанного исключения вызывается функция terminate(). По умолчанию terminate() вызывает функцию abort(), завершающую выполнение программы. Однако можно задать свою собственную обработку, используя функцию set_terminate(). Подробности можно найти в документации к компилятору.


Ниже представлен пример, иллюстрирующий способ обработки исключений в С++:





  • пример обработки простого исключения

#include
int main()
{
cout << "Start\n";

try { // начало блока try


cout << "Inside try block\n";
throw 100; // генерация ошибки

cout << "This will not execute";


}
catch (int i) { // перехват ошибки
cout << "Caught an exception -- value is: ";

cout << i << " \n";


}
cout << "End";
return 0;

}


Программа выведет на экран следующий текст:

Start
Inside try block


37

Caught an exception -- value is: 100


End

Рассмотрим внимательнее эту программу. Как можно видеть, блок try содержит три инструкции. За ним следует инструкция catch(int i), обрабатывающая исключения целого типа. В блоке try будут выполняться только две инструкции: первая и вторая — throw. Как только исключение было сгенерировано, управление передается инструкции catch, а блок try прекращает свое исполнение. Таким образом, catch не вызывается. Скорее можно сказать, что к ней переходит исполнение программы. Для этого автоматически осуществляется переустановка стека. Таким образом, инст-рукция после инструкции throw никогда не выполняется.


Обычно код в инструкции catch пытается исправить ошибку путем выполнения подходящих действий. Если ошибку удалось исправить, то выполнение продолжается с инструкции, непосредственно следующей за catch. Однако иногда не удается справиться с ошибкой, и блок catch завер-шает программу путем вызова функции exit() или функции abort().





Download 350,99 Kb.

Do'stlaringiz bilan baham:
1   ...   12   13   14   15   16   17   18   19   ...   22




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish