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



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





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




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

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]Кол-во просмотров: 111073
Оцените статью:

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

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

2017-10-18 12:18:49
VaidokStuts
Где приобрести Виагру в Российской Федерации

Даже если мужчина предпочитает придерживаться здорового стиля жизни, регулярно проходит все медицинские обследования и бегает по вечерам, позже или раньше его всё-равно ждут неприятности с потенцией: такова беспощадная сущность старости.

К счастью передовая медицина создала [url=http://via-sexgra.ru/viagra-kupit-moskva]дженерик виагра действие[/url] , что сумеют продлить нормальную половую жизнь на два десятка лет, не причиняя вреда при этом здоровью всех других органов и систем. Речь идет о Левитре дженериках, которые вы можете купить на этом ресурсе via-sexgra.ru

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

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

2017-10-18 12:16:15
Vaidoklit

Самые доступные аналоги Виагры Неприятности с потенцией в старшем возрасте испытывает огромное количество мужиков, но передовая медицина очень эффективно и хорошо борется с указанной проблемой при помощи Виагры. Виагра сама по себе — великолепный препарат с небольшим числом побочек, но ее весомым недостатком считается огромная стоимость. В этой статье мы расскажем о некоторых, наиболее эффективных заменителях банальной Виагры:

Сиалис — это первый аналог старого лекарственного средства для усиления потенции на отечественном рынке. Приобрести указанное лекарство а ещё [url=http://via-sexgra.ru/cialis-kupit-moskva]дженерик сиалис отзывы врачей[/url] по наиболее привлекательной цене вы можете на страницах via-sexgra.ru

Применяется и дозируется этот сиалис точно так же, как и обычная Виагра.

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

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

2017-10-17 17:59:06
Kendikjoync
Адекватные отзывы о лучших товарах в сети

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

Рядовому покупателю часто довольно сложно принять решение, надо ли совершать покупку, потому что отзывов на просторах сети может не быть, а отзывам на сайте продавца уже не верят даже школьники. Чтобы решить такую проблему был запущен ресурс https://otzavik.ru/, на котором вы сумеете прочитать реальные отзывы о десятках интернет-товаров, и причём тут отзывы написаны реальными покупателями, а не продавцом.

В данном году в Рунете продается огромное число товаров из группы «Красота и здоровье», и часто данные товары представляют из себя мази и гели или назначаемые внутрь пищевые вещества. Закономерно, что перед покупкой и стартом использования таких вещей лучше зайти на портал с отзывами и изучить опыт иных людей, хороший пример объективного отзыва вы можете посмотреть на страничке [url=https://otzavik.ru/artropant-otzuvu/]артропант крем для суставов отзывы форум[/url] . Всегда помните о том, что применение любых товаров медицинского назначения необходимо согласовывать с доктором, а на заниматься самодеятельностью.

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

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

Постарайтесь приложить парочку фото и писать по-максимуму детально.

2017-10-17 04:37:30
Susandew
[b]Росгосстрах Страховая Компания Осаго Оформить
[/b]
-----------------------------------
В случае же выставления такого счёта-фактуры покупателю (заказчику) не стоит принимать к вычету указанную в нём сумму НДС, поскольку суды в таких случаях однозначно поддерживают налоговиков, которые снимают из вычетов суммы НДС, исчисленные с процентов. В случае если платных одолжений нет, то баланс останется таким же. Некоторые из них все же обращаются к кредитным учреждениям. Поэтому при поиске оптимальной цены полиса ОСАГО нужно учитывать множество факторов, в том числе экспертное мнение о надёжности компании. После оплаты вам на указанный ранее e-mail пришлют электронный полис ОСАГО. Продал полис обязательной автогражданки без обязательного ТО, подала к одному из клиентов компании судебный иск, который и выиграла, пишет . В конце 2003 года кредитная организация была выкуплена у группы «Магнезит» структурами инвестиционной группы «Ренессанс Капитал» и получила соответствующее наименование — КБ «Ренессанс Капитал». С 2013 года подтвердить свой класс стало немного сложнее, чем раньше. Вплоть до 1933 года злотый свободно разменивался на золото и на иностранную валюту. Каждое кредитное учреждение должно заботиться о собственном имидже, ведь проведение сомнительных операций и другие нарушения с его стороны могут повлечь за собой серьезные последствия вплоть до отзыва лицензии Центробанком, что и произошло с банком Ренессанс 14 декабря 2015 года.


[b]Перейдите ниже по ссылке, чтобы получить кредит:[/b]

http://bestsky.info/redir.html

2017-10-16 21:05:35
Ekglonl
Новый сервис для заработка на просмотре видеороликов

Новинка интернет заработка видео-просмотры, которые приносят реальные деньги!

1 просмотр видео 100 рублей! Все просто, понятно и доступно!

Оплата за просмотр моментально. На счёт который Вы укажите при регистрации.

Для начала работы пройдите несложную регистрацию на сайте: http://moneygrup.tk/

2017-10-16 15:18:06
Kkykquz
Мы платим за лайки! - Оплата сдельная!

Наш сервис предоставляет настоящие лайки на фотографии заказчиков, которые готовы платить за качество.

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

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

Вам достаточно просто зарегистрироваться на нашем сервисе. > www.oplata-vklike.tk <

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

2017-10-16 13:23:38
Susanjoymn
[b]Как На МТС Перейти На Тариф Макси
[/b]
-----------------------------------
Можно заплатить и в терминале, но к чему эти неудобства, если это легко делается на вашем компьютере или смартфоне;. Стоимость страховки в альтернативной страховой компании «Согаз» — которая кстати также является аккредитованным партнером Локо-Банка будет в разы дешевле, чем Вам обычно предлагают в банке полисы от Страховых компаний «СК Благосостояние» или «АльфаСтрахование-Жизнь». Оксана, среди банков найти кредитора Вам будет нереально, поскольку ни одной организации не нужен заемщик с проблемной кредитной задолженностью. Возможно. Но после подачи заявления никто Вам деньги просто так не отдаст. Если вы решили оставить заявку на кредит онлайн сразу во все банки, то ответ может поступить и в течение часа. Так, например, оплачивать кредиткой Тинькофф (да и многими другими) покупку бытовой техники или мебели гораздо более рационально, чем оформлять кредит на месте в магазине, переплата будет меньше, не придется переплачивать за комплекс страховок и навязанных продавцами дополнительных услуг. Всем остальным при оформлении потребительского кредита придется приносить с собой документ, подтверждающий доход.


[b]Перейдите ниже по ссылке, чтобы получить кредит:[/b]

http://bestsky.info/redir.html

2017-10-15 15:50:31
Kpohqqy
Пройдите 1 регистрацию, сделайте 2 действия
и получайте от 8950 рублей каждые сутки в автоматическом режиме.

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

Более подробная информация у нас на сайте. ( www.prosto-dengi.tk )

2017-10-15 13:46:12
Clipdjq
Предлагаем Вам работу без вложений, на системе автоматического приёма и обработки заказов.

Мы предоставляем:

- Наш лицезионный софт.
- документы со всей необходимой доп. информацией.
- постоянная техническая поддержка.

Оплата от 5500 в день. Выплаты ежедневно.

Более подробная информация на нашем сайте >> http://obrabotka-zakazow.tk/ <<

2017-10-15 12:42:01
Luazwyc
Заработок на просмотре видеороликов

Новинка интернет заработка видео-просмотры, которые приносят реальные деньги!

1 просмотр видео = 100 рублей! Все просто, понятно и доступно!

Оплата за просмотр моментально. На счёт который Вы укажите при регистрации.

Для начала работы пройдите несложную регистрацию на сайте: http://moneygrup.tk/
Ваше имя: *
Текст записи: *
Имя:

Пароль:



Регистрация

Какой поисковик лучше?
Yandex
41% (63)
Rambler
10% (15)
Google
42% (65)
Yahoo!
1% (1)
MSN
0% (0)
Mail.ru
2% (3)
Aport
1% (1)
AltaVista
1% (2)
Другой
2% (3)

Проголосовало: 153
Странное какое-то у немцев отношение к компьютерам: на их языке слово "Gluck" означает счастье.
Рейтинг: 6.2/10 (4)
Посмотреть все анекдоты