Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Установленные исключения





Программирование на языке C

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

Программа на языке C++. Обработка исключений.

Цель: Изучить принципы обработки исключительных ситуаций на языке C++. Научится разрабатывать программы, использующие безопасный код.

Основные теоретические сведения

Исключения в C++.

С++ имеет чуствительный к контексту механизм обработки особых ситуаций. Он может быть более информирован, чем обработчик из signal.h и может обеспечить более сложное восстановление. Он не предназначен для обработки асинхронных исключений, определенных в signal.h.

Контекст для установки исключения - это блок try. Обработчики обьявлены в конце блока try с использованием ключегого слова catch.

Простой пример:

 

vect::vect(int n)

{

if(n < 1)

throw(n);

p = new int[n];

if(p == 0)

throw("FREE STORE EXHAUSED");

}

void g()

{

try {

vect a(n), b(n);

...

}

catch(int n) {...} //отслеживает все неправильные размеры

catch(char* error) {...} //отслеживает превышение свободной

//памяти

}

 

Установленные исключения.

Синтаксически выражения throw возникает в двух формах:

 

throw

throw выражение

 

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

 

void foo()

{

int i;

...

throw (i);

}

main()

{

try {

foo();

}

catch(int i) {...}

}

}

 

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

 

enum error {bounds, heap, other};

class vect_error {

private:

error e_type;

int ub, index, size;

public:

vect_error(error, int, int); //пакет вне пределов

vect_error(error, int); //пакет вне памяти

}

 

Теперь выражение throw может быть более информативным

 

...

throw vect_error(bounds, i, ub);

...

 

Date: 2015-12-12; view: 524; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию