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



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





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




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

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

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

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

2017-08-16 20:51:12
BarbaraHiell
[b]МУП "ЦШДП" ГО Г.Уфа РБ
[/b]
-----------------------------------
Условия и оформление заявки на получение кредитной карты в банках Армавира. Выбрать лучшие условия банков Армавира и заказать кредитную

При открытии или закрытии счета в банке по обслуживанию корпоративных карт необходимо уведомить об этом инспекцию в течение семи рабочих дней со дня его открытия или закрытия (ст. При себе необходимо иметь документ, удостоверяющий личность. Также очень просто и продлить кредит онлайн – достаточно оплатить проценты не менее чем за один день. Также в большинстве случаев при подаче онлайн заявки на кредит наличными в Ренессанс вам не потребуется дополнительно предоставлять справку о доходах либо искать поручителей! Оплатить кредит Ренессанс-банка через интернет совсем несложно. Можно ли получить кредит по чужому паспортуКредитная карта с доставкой на дом или новые возможности банковХорошо ли оформлять кредит онлайнМожно ли получить выгодный кредит на лечение в банке? Сразу после получения карты, запросите в банкомате баланс, распечатайте чек – баланс будет нулевым. Геометрические параметры флага – длина и ширина располагают соотношением 1.5:1. Площадь крыжа занимает ? площади всего полотнища. Во всем мире кредитные карты считаются основной альтернативой потребительскому кредиту. Корреспондент РБК оставил заявку на сайте Связь-банка и спустя пять дней стал обладателем дебетовой карты «Мир».


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

http://kredit.bestsky.info/

2017-08-16 17:00:41
BarbaraHiell
[b]Кредитные Карты Онлайн Без Справок О Доходах
[/b]
-----------------------------------
Платежная карта МИР Сбербанка (Sberbank) – это новый карточный продукт, выпуск которого начался с ноября 2016 года. Обратился кредитная карта банка москвы за суммой в 350 тыс. Почему выдаётся кредитная карта без справок о доходах, да ещё и онлайн? Не волнуйся, лет пять тебе не придется сводить дебет с кредитом. Скажете, что нет - "введете в заблуждение" страховщика, это может выясниться самым неожиданым образом через несколько лет. В итоге скажу что компания в моем случае сильно затянула выплаты и тем самым вызвала негативное к себе отношение, но при этом цены на страховку довольно низкие, и осаго в Росгострах я все же покупаю. И интернет класса «v.i.p» обойдется вам ежемесячно в 1200 рублей, но вместо получите безлмитку ночью и целых 30 Гб в дневное время. Страховщик возместит убытки всем пострадавшим, но сумма компенсации ограничена законодательством. Помощь в регистрации предлагает центр клиентской поддержки банка. В отделении банка этот процесс длится чуточку дольше. Тем не менее тот же банк направляет запросы в страховую компанию или РСА касательно всех договоров вашего страхования, которые у них имеются. Если же имеется открытый в Сбербанк кредит, горячая линия позволит уточнить некоторые детали по своей ссуде. Все заявления на получение карт от таких клиентов банк станет рассматривать индивидуально и может вообще отказать в выпуске карты.


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

http://kredit.bestsky.info/

2017-08-15 07:27:56
Dadgilvaf
ORGONITE концентрат для увеличения мышечной массы

[url=http://cplccp.ru/d4Ly][img]http://s019.radikal.ru/i605/1707/46/834b8d39e849.jpg[/img][/url]
ORGONITE быстрый рост мышечной массы.
[url=http://cplccp.ru/d4Ly][img]http://s019.radikal.ru/i634/1703/80/511fb7c108bc.png[/img][/url]


[url=http://bit.ly/2oQUzUu]ВЫДАВАЙ МИКРОЗАЙМЫ С ГАРАНТИРОВАННОЙ ДОХОДНОСТЬЮ ОТ 192% ДО 265% ГОДОВЫХ И ЗАБУДЬ О ФИНАНСОВЫХ ПРОБЛЕМАХ[/url]


=xxx$$=

2017-08-12 03:21:51
BarbaraHiell
[b]Продлить Полис ОСАГО Россгострах Через Интернет
[/b]
-----------------------------------
Можно с уверенностью сказать, что отзывы о платежной карте «Мир» все позитивные. Максимальная сумма кредитования до двух миллионов рублей. При признании в бухгалтерском учете сумма выручки от продажи товаров, продукции, выполнения работ, оказания услуг и др. При этом должна использоваться проводка Дт 97, Кт. Если возникают вопросы, связанные с работой сервиса или проблемы со входом в Личный кабинет, регистрацией, можно обратиться в службу технической поддержки по номеру телефона, который указан внизу страницы. Если Оценщик (эксперт) оценили ущерб гораздо в большей сумме, чем Вам возмещает Росгоссрах, Вы можете обратиться в суд о возмещении ущерба. Первое, что я могу посоветовать, — если у вас уже имеется рублевый вклад, не стоит сейчас бежать в банк и перекладывать средства из рублей в иностранную валюту. Россельхозбанк летом 2017 года предложил клиентам — физическим лицам новый депозит — «Доходный». Однако в XI—XII веках древнее государство пришло в упадок, а его владения сократились до Алтая и Саян.|Если уровень доходности депозита, по мнению Центробанка РФ, слишком высок, то такой вклад несет в себе дополнительные риски, поэтому частный банк и платит взносы в АСВ по повышенной ставке. Также получатель кредита в обязательном порядке должен быть гражданином РФ, иметь регистрацию в том месте, где собирается оформить потребительский кредит наличными Ренессанс онлайн либо наличие постоянной работы в этом регионе на протяжении от 3-х месяцев. Также возможно предоставление отсрочки начала погашения платежа по кредиту (возврат основного долга) на срок до 1,5 года. Они были распространены до 1950 года. Стоимость бензина в Польше по состоянию на февраль 2012 года составляла в среднем 5,4 злотых (1,29 евро, или 51 рубль) за литр, дизельного топлива – 5,2 злотых (1,24 евро, или 49 рублей). С 28 декабря 1905 года по 5 января 1906 года существовала Сочинская республика. Таким образом, посещать банк становится необязательным, достаточно подать заявку в режиме онлайн на сайте Ренессанс Кредит банка для оформления кредитной карты на собственное имя. Кредит наличными в Ренессанс Банке на сумму до 500 000 рублей с мгновенным одобрением и возможностью отправить онлайн заявку.


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

http://kredit.bestsky.info/

2017-08-11 04:49:36
Barbaragaick
[b]Как Проверить Расчет Стоимости Выплат По ОСАГО С Помощью Онлайн Сервиса РСА
[/b]
-----------------------------------
Содержание 1 Подробное описание услуги от билайн 2 Во какое количество обойдутся звонки в мире? Автокредит в Смоленске С каждым годом, месяцем и днем количество владельцев автомобилей историей по кредиту.Нужно знать, что при сдаче квартиры в аренду, вы имеете не только доход, но также и растраты. Подскажите, пожалуйста, подключили без моего ведома Копилку, я её удалила через приложение, но деньги не вывела (была уверена, что при удалении мне это предложат), как теперь вернуть деньги на счёт своей карты, с которой они были списаны? Здесь может возникнуть вопрос — ну хорошо, я могу продать часть облигаций и не потерять проценты, но кто их у меня купит-то, если деньги нужны срочно? Перевести деньги на карту Сбербанка можно также через терминалы QIWI. Чтобы получить кредит, сперва, необходимо заполнить на официальном сайте банка заявку, которая и станет основанием для составления и подписания кредитного договора. Кредитное предложение от одного из самых рейтинговых банков страны - банка ренессанс кредит.


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

http://kredit.bestsky.info/

2017-08-10 22:44:32
LarryCaf
Предлагаем вам удивительное средство для похудения Mangoosteen. С ним можно избавиться от 10 кг за недели.

Дерево гарциния растет в Малайзии. Плоды этого дерева обладают потрясающими свойствами, которые были взяты за основу средства Mangoosteen. В банке содержится более 25 плодов данного замечательного дерева. Плоды с растения мангкут помогают сжечь излишнею жировую ткань. И также замечательно влияют на человека в комплексе. Технология изготовления средства, и специализированная упаковка помогают сохранить все полезные свойства мангустина.

Основным действующим компонентом сиропа Mangoosteen являются плоды с дерева мангустин, в которых имеется огромное количество полезных элементов. Благодаря компоненту ксантону, которое в огромных дозах имеется в плоде, сильно тормозятся процессы окисления в теле. Ксантон признана одним из наиболее сильных антиоксидантов. В плодах растения мангустин к тому же имеются разные витамины и элементы. Купить сироп Мансустина можно на сайте http://mangjoo77.mangoosteen.com.


2017-08-10 16:00:55
LarryCaf
Приобрести сироп Mangoosteen можно на веб-сайте http://mangjoo77.mangoosteen.com

Рады предложить вам потрясающее средство для похудения Mangoosteen. С его помощью возможно сбросить около 10 kg за 14 дней.

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

Главным веществом сиропа Mangoosteen являются фрукты с дерева мангостин, в них имеется большое количество питательных веществ. Благодаря компоненту ксантону, которое в больших дозах имеется в плоде, значительно замедляются окислительные процессы в теле. Окись дифениленкетона является одним из наиболее сильных антиоксидантов. В плодах дерева мангустин к тому же имеются разнообразные группы витаминов и микроэлементы. Купить сироп Mangoosteen возможно на сайте http://mangjoo77.mangoosteen.com.


2017-08-10 08:43:12
LarryHeilt
Хотим предложить вам удивительное средство для снижения веса Mangoosteen. С его помощью возможно избавиться от 15 kg за 2 недели.

Растение мангостин произрастает в Азии. Плоды растения имеют замечательные особенности. Во флакончике имеется более 25 плодов этого замечательного дерева. Плоды дерева гарциния помогают сжечь чрезмерную липидную ткань. И также замечательно воздействуют на организм в комплексе. Специфика производства средства, и специализированная упаковка позволяют сберечь все удивительные свойства мангустина.

Основным компонентом сиропа Mangoosteen являются плоды с дерева мангкут, в которых имеется большое число питательных элементов. Благодаря компоненту ксантону, которое в огромных количествах имеется в плоде, значительно тормозятся процессы окисления в организме. Окись дифениленкетона считается одним из наиболее мощных антиокислителей. В плодах дерева мангостин к тому же содержатся различные группы витаминов и элементы. Приобрести сироп Mangoosteen возможно на интернет-сайте http://mangjoo77.mangoosteen.com.


2017-08-08 03:31:45
BarbaraHiell
[b]«Росгосстрах» В Тюменской Области Завышал Стоимость ОСАГО — Прокуратура
[/b]
-----------------------------------
Он владеет активами в разных отраслях экономики, в том числе энергетики и металлургии. КБ «Ренессанс Кредит», основанный в 2003 году, принадлежит влиятельному инвестиционному холдингу «ОНЭКСИМ», представляющему свои интересы в разных отраслях экономики. Однако, чтобы это стало возможно, у вас должен быть подключен "Интернет-банк". Однако, если клиент желает полностью погасить задолженность, достаточно обратиться к нам по любому удобному каналу связи и уточнить сумму. Если вышел из системы хоть на минуту раньше окончания смены – штраф, но если просидел дольше из-за долгой телефонной консультации – ноль поощрения. В таблице представлены банки не только столичного региона, но и других регионов РФ. Облигации справляются с этой задачей лучше, но вклады в разы популярнее. Каждый новый день новые 100 минут – по мнению пользователе, которые уже подключены к данному тарифу, отличный вариант в плане экономии денег. От 22 г.- от 100 000 грн. Покупка новой квартиры – это важное событие в жизни каждого человека. Этим летом мы поддержали ряд крупных проектов – например, рок-фестиваль «Нашествие», Московский международный кинофестиваль, гастрономический фестиваль «О, да!


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

http://kredit.bestsky.info/

2017-08-07 20:41:00
Barbaragaick
[b]Отзыв О Оператор Домашнего Call-центра Тинькофф
[/b]
-----------------------------------
Эту должность в настоящее время занимает член партии «Единая Россия» Анатолий Пахомов. Пополняемые вклады позволяют доложить деньги на счет во время действия договора, что удобно для планомерного накопления крупной суммы денег. У меня есть на всякий случай сбербанковская кредитная карта, там меня все устраивает. Единственное, что может усложнить процесс – это плохая кредитная история клиента. РОСГОССТРАХ – лидер отечественного рынка страхования по сборам и выплатам. Отзывы являются разнотипными. В некоторых комментариях указывается, что к клиентам здесь при страховых случаях – пренебрежительное отношение. Обновление гардероба, новая бытовая техника или путешествие – все это возможно с кредитной картой банка Ренессанс кредит. Там же можно по отзывам оформить онлайн – заявку, или сделать предварительный расчет на калькуляторе которая будет рассмотрена в течение 3-х календарных дней. При предъявлении заемщиком полного пакета документов, одобрение кредита происходит в течение 1 рабочего дня. К примеру, если ты за две смены обзвонил 225 проблемных клиентов и уговорил их выплатить 83 % кредитов, можно рассчитывать на большой бонус. Итак, если вы взвесили все за и против, и готовы оформить онлайн страхование автомобиля ОСАГО у себя дома, то предлагаем краткую пошаговую инструкцию. Когда офис кредитной организации расположен вбизнес-центре, где вы работаете, или в торговом центре возле вашего дома, это всегда удобно, — прокомментировал Олег Скворцов, заместитель председателя правления „Ренессанс Кредит“.


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

http://kredit.bestsky.info/
Ваше имя: *
Текст записи: *
Имя:

Пароль:



Регистрация

Как вы относитесь к спаму?
Положительно, Я сам спамер.
11% (21)
Безразлично
11% (21)
Нормально, сам бы спамил
6% (11)
Отрицательно
67% (129)
А ЧТО, ЕСТЬ СПАМ ...
6% (11)

Проголосовало: 193
Hа уроке классической литературы. Учительница:
- Кто может привести пример языка, на котором никто сегодня не говорит, но который является фундаментом других языков?
Вовочка:
- HТМL.
Рейтинг: 0/10 (0)
Посмотреть все анекдоты