» Главная
eXcode.ru » Статьи » С / С++ » Система
» Новости
» Опросы
» Файлы
» Журнал



Пользователей: 0
Гостей: 6





Обработка исключений




Содержание статьи:

1) Введение.
2) Инициирование исключений.
3) Синтаксис перехвата исключений.
4) Многоуровневые исключения и выполнение программы после обработки исключения.

Введение.

Привет всем. Как видите, я сподобился на ещё одну статью по С++. Будет она посвящена исключениям. Нет-нет, не исключениям из правил, а системе управления поведением программы, при возникновении некорректных ситуаций в процессе её [программы] выполнения. Как такие ситуации перехватывались в старом добром С? Просто писали (например):

<table class=code cellpadding=5 align=center width=98% border=1 bordercolor=#3B3B3B><tr><td>

int *ptr;
ptr = ( int * )malloc( 4 );
if( ptr ){
printf(“A-a-a-a-a-a!!!”);
getch();
exit( 0 );
}

</td></tr></table>

Сейчас же, когда программы стали очень большими и навороченными, просто выхода из программы по exit’у не достаточно. Надо хотя бы освободить ресурсы (помимо этого мы можем захотеть сделать что-нибудь ещё). Можно конечно передавать всем функциям, которые у нас есть механизм корректного завершения программы, но есть способ лучше: вызывать функцию наподобие SendMessage, а затем засесть за написание огромного обработчика ВСЕХ возможных исключительных ситуаций. Представляете, какой получится монстр? Правильно мыслите – есть способ ещё лучше! Использование исключений!

Инициирование исключений.

Инициирование осуществляется с помощью секции throw.
<i>
void f( void ) {
throw( 1.1 );
}
</i>
throw могут передаваться любые типы данных: стандартные типы данных, типы данных, определенные пользователем, указатели, перечисления, объекты классов и структур.

Синтаксис перехвата исключений.

Для перехвата исключения необходимо блок, в котором оно возникает поместить в секцию try, а затем поставить несколько секций catch в которых вызванные исключения будут обрабатываться.

<table class=code cellpadding=5 align=center width=98% border=1 bordercolor=#3B3B3B><tr><td>

void f( float f ){
char Number[100];
try{
if( f < 5 )
throw( ( int )1 );
else
throw( 1.1 );
}
catch( int i ){
MessageBox( 0 , _gcvt( i , 9 , Number ) , 0 , 0 );
}
catch( double d ){
MessageBox( 0 , _gcvt( d , 9 , Number ) , 0 , 0 );
}
}

</td></tr></table>

В данном случае у нас две секции catch. В одной обрабатываются исключении с типом int, а в другой с типом double. Если же Вам хочется написать для всех типов один обработчик, то это можно сделать следующим способом:

<table class=code cellpadding=5 align=center width=98% border=1 bordercolor=#3B3B3B><tr><td>

void f( float f ){
char Number[100];
try{
if( f < 5 )
throw( ( int )1 );
else
throw( 1.1 );
}
catch(...){
MessageBox( 0 , 0 , 0 , 0 );
}
}

</td></tr></table>

Многоуровневые исключения и выполнение программы после обработки исключения.

Если в блоке try не было инициировано ни одного исключения, то все обработчики будут проигнорированы и выполнение программы продолжится, если же исключение было вызвано, то выполняется код соответствующего обработчика (из всего списка определённых обработчиков будет выполнен только он), после чего либо продолжится выполнение программы, либо в обработчике будет инициировано новое исключение:

<table class=code cellpadding=5 align=center width=98% border=1 bordercolor=#3B3B3B><tr><td>

void f( float f ){
try{
try{
if( f < 5 )
throw( ( int )1 );
else
throw( 1.1 );
}
catch(...){
MessageBox( 0 , "..." , 0 , 0 );
throw ( NULL );
}
}
catch( int ){
MessageBox( 0 , 0 , 0 , 0 );
}
}

</td></tr></table>

Такая обработка исключений возможна, но я настоятельно рекомендую использовать её как можно реже.

источник savardge.narod.ru
К началу статьи





Добавил: MadvEXДата публикации: 2005-07-09 16:52:14

Рейтинг статьи:3.33 [Голосов 6]Кол-во просмотров: 116452
Оцените статью:

Комментарии читателей

Всего комментариев: 4358

2019-06-23 06:16:53
taxianodamn
Агрегатор Я.такси г.Самара-это хорошая возможность произвести заказ автомашины в любое время, куда угодно. Сделать заказ авто вы можете тремя способами: на сайте Яндекс такси, через оператора позвонив нам или воспользовавшись мобильным приложением. Надо указать время когда нужна машина, личный номер сотового телефона, местонахождение.

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

Плюсы работы в нашем Я такси: Моментальная регистрация в приложение, Не очень большая комиссия, Оплата мгновенная, Постоянный поток заявок, Диспетчер постоянно на связи.

Для работы в такси владельцу автомобиля нужно оформиться самому и машину, это в целом займет не больше пяти минут. Комисия агрегатора составит не больше 20 %. Можно получать зарплату когда вам удобно. У вас постоянно будут заказы. В случае проблем возможно связаться с постоянно работающей службой поддержки. Яндекс такси помогает гражданам быстро доехать до места назначения. Заказывая данное Yandex такси вы приобретаете лучший сервис в нашем городе.

самара работа в такси на авто компании = [url=https://centrsnab163.ru]как работать в яндекс такси[/url]

2019-06-23 06:12:26
taxiPonvels
Агрегатор Яндекс такси Самара позволяет людям вызвать авто в любое удобное вам время. Сделать заказ авто вы можете 3 способами: через специальное мобильное приложение, закачав его, на сайте, по телефону Яндекс такси. Вам требуется указать собственный номер сотового телефона, адрес, время когда нужна авто.

Заказывают Я. такси с детским авто креслом для перевозки детей, в вечернее время после встреч надежнее воспользоваться такси, чем сесть в машину нетрезвым, в аэропорт или на вокзал спокойнее пользоваться Я. такси и даже не искать где оставить свою машину. Платеж может производится наличным или безналичным переводом. Время подъезда Яндекс такси составляет от пяти до 10 минут ориентировочно.

Преимущества работы в Я. такси: Моментальная регистрация в приложение, Небольшая комиссия, Оплата мгновенная, Постоянный поток заказов, Оператор круглые сутки на связи.

Для работы в Я. такси водителю необходимо зарегистрироваться самому и автомашину, все это займёт пять мин. Наша комиссия будет составлять не более 15 % отдохода. Вы сможете получить зарплату когда вам удобно. У вас всегда обязательно будут заказы. В случае вопросов возможно установить связь с постоянно работающей службой сопровождения. Яндекс такси помогает людям быстро доехать до нужного места. Заказывая данное Я. такси вы получаете наилучший сервис в г. Самара.

работа в такси яндекс на своей машине = [url=https://centrsnab163.ru]работа от работодателей водитель такси[/url]

2019-06-14 13:47:41
AntonVor
Получите полностью готовый бизнес под ключ!

Вам не надо ждать у моря погоды Этот БИЗНЕС уже будет приносить вам ПРИБЫЛЬ!
Легкое УПРАВЛЕНИЕ с МОБИЛЬНОГО Вам не надо находится постоянно у ПК

Мы все настроим и СДЕЛАЕМ за ВАС
Более подробная информация у нас на сайте или видеоблоге.

https://youtu.be/3npjE5Ose8A
http://v.ht/biznes_pod_klyuch

2019-06-14 06:26:54
taxianodamn
Агрегатор Яндекс такси Самара даёт возможность вам вызвать автов нужное место и в любое время дня и ночи. Сделать заказ авто вы можете несколькими способами: через специальное мобильное приложение, закачав его, на сайте, по телефону Яндекс такси. Вам надлежит указать время когда требуется автомобиль, личный номер телефона, местонахождение.

Заказывают Я. такси с детским креслом для перевозки детей, в вечернее время после посиделок безопаснее прибегнуть к такси, чем садиться в машину нетрезвым, на вокзал или в аэропорт комфортнее воспользоваться Я. такси и не думать где разместить своё транспортное средство. Расчёт происходит безналичным или наличным платежом. Время подъезда Я. такси составляет от пяти до 10 мин. примерно.

Плюсы работы в Яндекс такси: Быстрая регистрация в приложение, Не очень большая комиссия, Выплаты мгновенные, Постоянный поток заявок, Диспетчер круглосуточно на связи.

Для выполнения работ в Я. такси водителю надо зарегистрироваться самому и транспорт, перечисленное займёт 5 минут. Наша комиссия будет составлять не больше 20 %. Вы сможете получать оплату за работу в любое время. У вас всегда будут заявки. В случае вопросов можно установить связь с постоянно функционирующей службой поддержки. Yandex такси помогает гражданам быстро доехать до нужного места. Заказывая наше Я. такси вы получаете лучший сервис в городе.

работа такси без личного = [url=https://centrsnab163.ru]такси работа на машине фирмы[/url]

2019-06-14 06:22:32
taxiPonvels
Главный сервис Яндекс такси даёт возможность вам вызвать автов любую точку города. Сделать заказ авто вы можете несколькими способами: через специальное мобильное приложение, закачав его, на сайте, по телефону Яндекс такси. Вам требуется написать время когда нужна машина, собственный номер сотового, местоположение.

Заказывают Я. такси вместе с детским креслом для перевозки деток, в вечернее время после посиделок лучше всего воспользоваться такси, чем садиться в транспортное средство нетрезвым, на вокзал или в аэропорт спокойнее воспользоваться Yandex такси и даже не думать где разместить свою автомашину. Расчёт происходит безналичным или наличным платежом. Время подъезда Я. такси составляет от пяти до 10 мин. примерно.

Преимущества работы в Я. такси: Моментальная регистрация в приложение, Небольшая комиссия, Оплата мгновенная, Постоянный поток заказов, Оператор круглые сутки на связи.

Для работы в такси водителю необходимо оформиться самому и машину, это займёт не больше 5 минут. Процент агрегатора будет составлять не больше двадцати процентов. Возможно получить заработную плату когда вам удобно. У вас постоянно обязательно будут заказы. В случае вопросов сможете соединиться с постоянно работающей службой сопровождения. Яндекс такси помогает гражданам быстро добраться до нужного места. Заказывая современное Yandex такси вы приобретаете люксовый сервис в г. Самара.

подключение к яндекс такси самара - [url=https://centrsnab163.ru]работать в яндекс такси на своей машине[/url]

2019-06-12 15:04:38
MiraVor
Наш сервис осуществляет настоящие лайки на фото заказчиков, которые готовы платить за качество.

Именно для этого мы и подбираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и получать за это деньги.

Для того чтобы стать нашим удалённым сотрудником и начать ставить лайки, и зарабатывать за это 45 руб. за 1 поставленный лайк.

Вам понадобится просто пройти реристрацию на нашем блоге. >>> http://v.ht/45_za_like/ <<<

Вывод заработанных средств производится каждый день в течении пяти минут.

2019-06-12 12:02:39
ElenaJdanova
Пройдите 1 регистрацию, сделайте 2 действия
и получайте от 8950 рублей каждые сутки в автоматическом режиме.

Мы гарантируем:
- Первый заработок в течении 60 минут.
- Стабильный доход 24 часа в сутки.
- Поступление денег без задержек.
- Для России, стран СНГ и Европы.
- Без вложений и установки ПО.
- Специально для новичков и людей без опыта.

Более подробная информация на нашем блоге: > http://v.ht/prosto_dengy <

2019-06-12 08:38:18
MiraVor
Наш сервис осуществляет реальные лайки на фотографии заказчиков, которые обязуются платить за качество.

Именно для этого мы и принимаем удалённых работников, которые будут выполнять задачу, то есть проставлять лайки и получать за это деньги.

Для того чтобы стать нашим удалённым работником и начать проставлять лайки, и заработать при этом 45 руб. за 1 поставленный лайк.

Вам понадобится просто пройти реристрацию на нашем прортале. >>> http://v.ht/45_za_like/ <<<

Вывод денежных средств проходит ежедневно в течении нескольких минут.

2019-06-11 20:24:22
ElenaJdanova
Пройдите 1 регистрацию, сделайте 2 действия
и получайте от 8950 рублей каждые сутки в автоматическом режиме.

Мы гарантируем:
- Первый заработок в течении 60 минут.
- Стабильный доход 24 часа в сутки.
- Поступление денег без задержек.
- Для России, стран СНГ и Европы.
- Без вложений и установки ПО.
- Специально для новичков и людей без опыта.

Более подробная информация у нас на блоге: > https://prostowmr.blogspot.com/ <

2019-06-11 17:01:32
MiraVor
Наш сервис осуществляет живые лайки на фотографии заказчиков, которые обязуются платить за качество.

Только для этого мы и принимаем удалённых работников, которые будут выполнять работу, то есть ставить лайки и получать за Ваш труд деньги.

Чтобы стать нашим удалённым сотрудником и начать проставлять лайки, и получать за это 45 руб. за 1 поставленный лайк.

Вам потребуется просто пройти реристрацию на нашем сервисе. > http://v.ht/45_za_like/ <

Выплата денежных средств проходит каждый день в течении пяти минут.
Ваше имя: *
Текст записи: *
Имя:

Пароль:



Регистрация

Вы купите понравившуюсь программу?
Да, если не найду Crack
19% (40)
С удовольствием если будут деньги
23% (48)
Нет, потомучто не знаю как заплатить
6% (12)
Нет, принципиально!
17% (37)
Нет, у меня никогда нет денег!
14% (29)
Да, если разработчик будет русским
9% (20)
Нет, не хочу париться с оплатой
13% (27)

Проголосовало: 213
У женщины-программистки есть три пути сделать себе карьеру: два спереди и один сзади!
Рейтинг: 5/10 (9)
Посмотреть все анекдоты