У вас вопросы?
У нас ответы:) SamZan.net

Тема- Генерування виключної ситуації

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 29.12.2024

Лабораторна робота № 11

Тема: Генерування виключної ситуації.  

Мета: Навчитися обробляти виключні ситуації .Спроектувати и написати програму, яка використовує ці поняття.

Література: Г.Шилдт,Самоучитель С++, С.В. Глушков, Практикум по С++.

Теоретичні положення

Механізм обробки помилок (або виняткових ситуацій, виключень — exception handling) вбудовано в мову C++. Цей механізм дозволяє коректно обробляти помилки, що виникають в процесі роботи програми. За його допомогою при виникненні помилки може бути автоматично викликана процедура її обробки. Принципова перевага такого підходу полягає в тому, що він дозволяє автоматично, в залежності від ситуації, запускати одну пз багатьох функцій обробки помилок, які попередньо «вручну» вбудовуються в основну програму. Належним чином запрограмована обробка виняткових ситуацій допомагає створювати дійсно відмовостійкі програми.

Обробка виняткових ситуацій в мові C++ організується за допомогою трьох ключових слів: try, catch та throw. Оператори програми, під час виконання яких потрібно забезпечити обробку виняткових ситуацій, розташовуються в блоці try. Якщо виняткова ситуація (тобто помилка) виникає всередині блоку try, вона «збуджується» (ключове слово throw), перехоплюється (ключове слово catch) та обробляється.

Функції, що викликаються в блоці try, також можуть збуджувати виняткову ситуацію. Будь-яка виняткова ситуація повинна перехоплюватися інструкцією catch, що розташовується безпосередньо за відповідним блоком try. Далі представлена основна форма інструкцій try та catch:

try {

// блок генерації виняткової ситуації

}

catch (type1 arg) {

// блок перехоплення виняткової ситуації

}

catch (type2 arg) {

// блок перехоплення виняткової ситуації

}

catch (type arg) {

// блок перехоплення виняткової ситуації

}

У блоках try повинні бути розташовані ті частини програми, при виконанні яких необхідно відслідковувати можливі помилки. Це можуть бути як кілька інструкцій всередині однієї функції, так і всі інструкції функції main(). Після генерації виняткової ситуації вона перехоплюється та обробляється у відповідному блоці-оброблювачі catch. З блоком try може бути зв’язано декілька інструкцій catch. Tе, яка саме інструкція catch буде використана, залежить від типу виняткової ситуації. Іншими словами, якщо тип даних, зазначений в інструкції catch, відповідає типу (значенню) згенерованої виняткової ситуації, виконується дана інструкція catch. При цьому решта інструкцій блоку try буде проігноровано (тобто відразу після того, як якась інструкція в блоці try зумовила появу виняткової ситуації, керування передається відповідній інструкції catch, минаючи решту інструкцій блоку try). Якщо виняткова ситуація перехоплена, аргумент arg буде містити відповідне значення. Якщо доступ до значення виняткової ситуації не потрібен, в інструкції catch можна вказати лише її тип type, а аргумент arg вказувати не обов’язково. Можна перехоплювати значення будь-яких типів даних, у тому числі структур та класів.

Ось основна форма інструкції throw.

throw <значення, що ідентифікує виключення>;

Інструкція throw повинна виконуватися або усередині блоку try, або в будь-якій функції, що викликається у цьому блоці.

У наступному прикладі показано, як в мові C++ функціонує система обробки виняткових ситуацій.

#include <iostream>

#include<conio.h>

using namespace std;

int main()

{

int a;

char* b = "test string for exception generation";

cout << "Begining..." << endl;

//cout << b;

try {

// Блок try

cin >> a;

cout << "Inside try block" << endl;

if(!a) throw 10; // Генерація виключення 10

if(a == -1) throw 10.; // Генерація виключення 10.

else throw b; // Генерація виключення зі строковим ідентифікатором

cout << "This statement can't to be executed";

}

catch (int i)

{          // Оброблювач 1

cout << "Error with number: ";

cout << i << endl;

}

catch (char* b)

{          // Оброблювач 2

cout << "String error: ";

cout << b << endl;

}

catch(...)

{ // Узагальнений оброблювач

cout << "Unknown error 10.!" << endl;

cout << "Program finished ...";

}

getch();

return 0;

}

Хід роботи

Реалізувати варіанти завдань з лабораторній роботи № 1 з урахуванням наступних додаткових вимог.

  1.  Математичний вираз повинен обчислюватись у окремій користувацькій функції.
  2.  Коректність вхідних даних повинна перевірятись за допомогою механізму перехвату виключень мови С++.
  3.  При виконанні завдання забезпечити дворівневу перевірку двома способами:

– за допомогою вкладених блоків try;

– шляхом перехвату виключень у основній програмі та у функції, що викликається.

 

Контрольні запитання

  1.  Які помилки можуть винукнути під час роботи програми?
  2.  Для чого використовується блок try?
  3.  Для чого використовується блок catch?
  4.  Для чого використовується блок throw?




1. Введение Среди субъектов административного права органы исполнительной власти гос
2. Причини кровотеч- А
3. Уголовно-правовая характеристика получения взятки
4. на тему ОСОБЕННОСТИ ПИСЬМЕННОГО ИНФОРМАТИВНОГО ПЕРЕВОДА ОФИСНОЙ ДОКУМЕНТАЦИИ С АНГЛИЙСКОГО ЯЗЫКА НА РУССК
5. вариантам действий формирований а также производс твенной деятельности объекта в условиях радиоактивног.html
6. ВАРИАНТ 1 1число стран Зарубежной Европы
7.  Форми професійного мовного спілкування економіста Ділове спілкування визначається як специфічна форм
8. Раздумья о жизни
9. 760 нм воспринимаемые сетчатой оболочкой зрительного анализатора
10. Реферат- Рынок информационных услуг
11. Теория государства и права
12. Типология СМИ
13. Bitru- Красота и мозг
14. Информационные технологии управления
15. подвальный этаж Этаж полностью или большей частью заглубленный в землю Отдельный этаж Расположе
16. Кассовые операции
17. VII ст. расселились на огромной территории Восточной Европы образовывая союзы племен.
18. Полимерлі материалдар ~~ымына аны~тама бері~із
19. . Календарное время дней 365 365 2.
20. У т в е р ж д а ю Начальник Сызранской авт