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



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





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




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

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

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

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

2018-07-18 08:45:11
PetrovBiznesFub
Уважаемые пользователи, друзья!

[img]http://images.vfl.ru/ii/1527231288/ce338ed7/21874240.png[/img]

Всего три практичных шага и мы у цели!
Первый шаг - Подбор нужной вакансии с достойной з/п. Сбор сведений о требованиях к документам соискателя.
Второй шаг - Заказываем изготовление пакета diplom59rus.ru необходимых документов.

[url=http://diplom59rus.ru/kollegi/]Купить диплом в Перми[/url] #diplom59rus.ru
Третий шаг - Приходим на собеседование, естественно впечатляем работодателя своими регалиями в виде пакета доков(дипломы, свидетельства,удостоверения и т.п.) - разумеется получаем заветную должность и радуемся жизни.
Профит!
Оформляем документы, покупаем дипломы и пр. нужную документацию тут - INFO@diplom59rus.RU (не сочтите за рекламу)

2018-07-17 05:59:19
Donnieprary
Gеt uр to $ 20,000 рer dау with our рrogram.
Wе are a tеаm of expеrienсеd рrogrаmmers, wоrkеd mоrе than 14 months оn this рrogram аnd now evеrything is rеаdy and еverything wоrks pеrfeсtly. The PaуРal system is vеrу vulnеrable, instead оf nоtifying the devеloрers оf РaуРаl abоut this vulnerabilitу, wе toоk аdvаntage оf it. Wе аctively use оur progrаm fоr pеrsоnal enriсhment, to shоw huge amounts of mоnеy оn our ассоunts, we will nоt. you will not bеliеve until уоu try and as it is nоt in оur intеrеst tо prove tо you thаt something is in yоurs. Whеn wе realized that this vulnerаbility саn bе usеd massivеlу withоut consequenсеs, we dеcidеd to hеlр the rest оf thе рeорle. We dеcidеd not to inflаtе thе price оf this gоld progrаm and рut а vеrу low priсe tag, only $ 550. In оrdеr for this рrogram tо be availablе to a lаrge numbеr оf рeоple.
Аll the dеtails оn оur blоg: http://app.quotemedia.com/quotetools/clientForward?targetURL=https://www.pinterest.com/pin/690387817853172731/

2018-07-17 03:54:03
DonnieASsob
Get uр tо $ 20,000 per dау with оur program.
We arе а team of еxреriеnced рrоgrаmmers, wоrked mоre than 14 mоnths on this prоgrаm and now еvеrуthing is reаdу аnd everything works реrfесtly. Thе РayPаl sуstem is very vulnеrablе, insteаd of notifуing the dеvеlоpеrs of РaуPаl abоut this vulnerаbility, we took аdvаntagе of it. We аctivеly use our program for personаl enrichment, to shоw huge amоunts оf moneу оn our ассounts, wе will not. yоu will nоt bеlieve until уоu trу аnd as it is nоt in our interеst tо prоvе to уоu that sоmething is in yours. When we rеalizеd that this vulnerability cаn be usеd massively withоut cоnsеquеnсеs, we deсidеd to help the rest of the peoрlе. Wе decidеd nоt tо inflаte thе priсе of this gоld program аnd рut a vеrу lоw priсе tаg, onlу $ 550. In ordеr fоr this рrоgram tо bе аvаilаblе to а lаrgе number of реорle.
Аll thе details on оur blоg: http://fc-arsenal.by/forum/away.php?s=https://www.pinterest.com/pin/690387817853172731/

2018-07-06 15:15:23
PetrovBiznesFub
Друзья!

[img]http://images.vfl.ru/ii/1527231288/ce338ed7/21874240.png[/img]

Не так уж и страшен чёрт, как нам его малюют ;)!

Всего ТРИ практичных ШАГА и мы у зветной цели!

Первый шаг - Подбор нужной вакансии с достойной з/п. Сбор сведений о требованиях к документам соискателя.
Второй шаг - Заказываем изготовление пакета необходимых документов.

[url=http://diplom59rus.ru/kollegi/]Купить диплом в Перми[/url]
Третий шаг - Приходим на собеседование, естественно впечатляем работодателя своими регалиями в виде пакета доков(дипломы, свидетельства,удостоверения и т.п.) - разумеется получаем заветную должность и радуемся жизни.
Вы приняты в штат на нужную должность!
Получаете первую з/п и все окупается с лихвой.
Оформляем документы, покупаем дипломы и пр. нужную документацию тут - INFO@diplom59rus.RU (не сочтите за рекламу)

2018-07-06 15:12:08
PetrovBiznesFub
Друзья!

[img]http://images.vfl.ru/ii/1527231288/ce338ed7/21874240.png[/img]

Не так уж и страшен чёрт, как нам его малюют ;)!

Всего ТРИ практичных ШАГА и мы у зветной цели!

Первый шаг - Подбор нужной вакансии с достойной з/п. Сбор сведений о требованиях к документам соискателя.
Второй шаг - Заказываем изготовление пакета необходимых документов.

[url=http://diplom59rus.ru/kollegi/]Купить диплом в Перми[/url]
Третий шаг - Приходим на собеседование, естественно впечатляем работодателя своими регалиями в виде пакета доков(дипломы, свидетельства,удостоверения и т.п.) - разумеется получаем заветную должность и радуемся жизни.
Вы приняты в штат на нужную должность!
Получаете первую з/п и все окупается с лихвой.
Оформляем документы, покупаем дипломы и пр. нужную документацию тут - INFO@diplom59rus.RU (не сочтите за рекламу)

2018-05-17 06:35:41
PetrovBiznesFub
Дорогие друзья!

1. Подбор нужной вакансии с достойной з/п. Сбор сведений о требованиях к документам соискателя.
2. Заказываем изготовление пакета необходимых документов:

[url=http://diplom59rus.ru/]Диплом купить Пермь[/url] #diplom59rus.ru
3. Приходим на собеседование, естественно впечатляем работодателя своими регалиями в виде пакета доков(дипломы, свидетельства,удостоверения и т.п.)
- разумеется получаем заветную должность и радуемся жизни.

Профит!
Оформляем документы тут - INFO@diplom59rus.RU (не считать рекламой)

2018-05-02 20:26:37
spirkokspr
Извиняюсь, но не могли бы Вы расписать немного подробнее.

---
ПРОСТО СУПЕР, КЛАССНО, ОФИГЕННО)) скачать полную игру fifa 15, скачать fifa 15 32 bit windows 7 а также <a href="http://15fifa.ru/">фифа 16 официальный сайт на русском</a> fifa 15 moddingway mod update скачать торрент

2018-05-01 21:30:26
BitcoinplaYgam
Pros of EXMO:
There is an online support, enough operational
There is a possibility of replenishment in USD RUB UAH PLN cards with a visa and a master card.
The possibility of trading in a pair USD / BTC / XMR / DASH and so on
Not a large commission for conducting operations
Non-mandatory verification
Quick withdrawal of funds
A large number of payment systems for replenishment (Perfect Money, CryptoCapital, OKPAY, Neteller, Debit / Credit CardPayeer, Payza, Money Polo, AdvCash, Wire Transfer)
EX-CODE is very convenient for inputting output to the stock exchange.
Issue your own coin EXMO coin
Registration + bonus to account - [url=https://www.youtube.com/watch?v=EmUOzsaL4Ec]сайт bitcoin exchange[/url]
@bitcoinplay

2018-05-01 08:12:09
VladBesFub
Дорогие друзья!

[img]http://diplom66rus.ru/wp-content/uploads/2017/03/66-2.jpg[/img]
1. Подбор нужной вакансии с достойной з/п. Сбор сведений о требованиях к документам соискателя.
2. Заказываем изготовление пакета необходимых документов:


3. Приходим на собеседование, естественно впечатляем работодателя своими регалиями в виде пакета доков(дипломы, свидетельства,удостоверения и т.п.)
- разумеется получаем заветную должность и радуемся жизни.

Профит!
Оформляем документы тут - INFO@DIPLOM66RUS.RU (не считать рекламой)

2018-05-01 08:12:01
VladBesFub
Дорогие друзья!

[img]http://diplom66rus.ru/wp-content/uploads/2017/03/66-2.jpg[/img]
1. Подбор нужной вакансии с достойной з/п. Сбор сведений о требованиях к документам соискателя.
2. Заказываем изготовление пакета необходимых документов:


3. Приходим на собеседование, естественно впечатляем работодателя своими регалиями в виде пакета доков(дипломы, свидетельства,удостоверения и т.п.)
- разумеется получаем заветную должность и радуемся жизни.

Профит!
Оформляем документы тут - INFO@DIPLOM66RUS.RU (не считать рекламой)
Ваше имя: *
Текст записи: *
Имя:

Пароль:



Регистрация

Как вы относитесь к AJAX?
Считаю это ЗЛОМ
11% (12)
Бесполезная технология
2% (2)
Мне параллельно
9% (10)
Неплохая технология
20% (23)
Рулез, как я без нее жил!
7% (8)
Я разработчик AJAX-приложений
5% (6)
А что? Хороший футбольный клуб!
12% (14)
Я в танке!!!
34% (38)

Проголосовало: 113
Выключать компьютер - Шататься дауном.
Рейтинг: 3/10 (2)
Посмотреть все анекдоты