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

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

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

2018-11-20 23:26:21
Kara13svd
[URL=http://piccash.net/51575/870416/][IMG]http://piccash.net/allimage/2018/10-3/img_thumb/870416-thumb.jpeg[/IMG][/URL]
Зажигательная, не молодая уже мамуля с громадными сиськами мастурбирует своему сынку [url=https://incest-home-video.ru/grany/863-oldies-and-teens-compilation.html]porno.vnuchka vileji babulinu pizdu[/url]
во время массажа. Натерев свои титьки и розовенькую головочку члена, мамаша сначала стала ладонями мнуть писюн мужчины, а далее начала дрочить его своими исполинскими, шикарными сисяндрами [url=https://incest-home-video.ru/grendfather/7784-dedushka-sbivaet-celku-rodnoy-vnuchke-na-divane.html]dedushka atarval celku[/url]
в прямом эфире.

Жми на картинку чтоб посмотреть всю красоту этой спелой мамаши!!!
[URL=http://piccash.net/51575/870418/][IMG]http://piccash.net/allimage/2018/10-3/img_thumb/870418-thumb.jpeg[/IMG][/URL]

2018-11-20 23:22:55
Kara13akp
[URL=http://piccash.net/51575/870416/][IMG]http://piccash.net/allimage/2018/10-3/img_thumb/870416-thumb.jpeg[/IMG][/URL]
Сногсшибательная, не молодая уже мамуля с исполинскими грудями дрочит родному сынишке [url=https://incest-home-video.ru/grendfather]ебу внучку ру[/url]
во время массажа. Растерев свои сиси и аленькую головку члена, мать сначала взялась кулачками растирать пенис парня, а потом стала мастурбировать его своими исполинскими, офигенными сисяндрами [url=https://incest-home-video.ru/sister/35-pervyy-analnyy-incest-opyt.html]студентки малин дочь брат перви раз порно[/url]
онлайн.

Нажимай на скрин чтобы посмотреть всю красоту данной зрелой матери!!!
[URL=http://piccash.net/51575/870418/][IMG]http://piccash.net/allimage/2018/10-3/img_thumb/870418-thumb.jpeg[/IMG][/URL]

2018-11-07 18:38:02
Andreasycm
Здравствуйте товарищи!
1)[url=https://skytent.by/]билборд минск[/url] -Рекламные щиты ( билборды ) в Беларуси – самый востребованный тип наружной рекламы, размещаемый в непосредственной близости от автомобильных дорог.
2)[url=https://skytent.by/]металлоконструкции минск[/url] -Весьма значимыми и присущими для любой постройки элементами являются металлические навесы, которые как нельзя лучше защищают от осадков или падающей листвы.
3)[url=https://skytent.by/]тенты минск[/url] -Изготовление тентов и использование в быту или на производстве тентовых конструкций – кратчайший способ быстрого сооружения необходимого помещения или дополнения уже имеющегося.
4)[url=https://skytent.by/]тентовая торговая палатка минск[/url] -Это одна из актуальнейших конструкций, распространенных по бесчисленному количеству городов и поселков.
http://kentau.mektebi.kz/user/snegirojxu/
http://iliqchuan.ru/forum/member.php?u=121663
http://forum.south-park.ru/profile.php?mode=viewprofile&u=127667
http://myy.at/index.php?action=profile;u=503582
http://egame.borec.cz/profile.php?lookup=7983

2018-11-07 18:38:02
Andreasbll
Здравствуйте дамы и господа!
1)[url=https://skytent.by/]билборд минск[/url] -Рекламные щиты ( билборды ) в Беларуси – самый востребованный тип наружной рекламы, размещаемый в непосредственной близости от автомобильных дорог.
2)[url=https://skytent.by/]металлоконструкции минск[/url] -Весьма значимыми и присущими для любой постройки элементами являются металлические навесы, которые как нельзя лучше защищают от осадков или падающей листвы.
3)[url=https://skytent.by/]тенты минск[/url] -Изготовление тентов и использование в быту или на производстве тентовых конструкций – кратчайший способ быстрого сооружения необходимого помещения или дополнения уже имеющегося.
4)[url=https://skytent.by/]тентовая торговая палатка минск[/url] -Это одна из актуальнейших конструкций, распространенных по бесчисленному количеству городов и поселков.
https://bbs.archlinux32.org/profile.php?id=154607
http://mrzsite.hol.es/user/kapriolihw/
http://www.sirfmobile.com/forum/memberlist.php?mode=viewprofile&u=14312
http://kadernictvirimska.wz.cz/profile.php?lookup=11970
http://baijiamama.com/space-uid-9070.html

2018-11-07 18:36:50
Andreasmvg
Здравствуйте господа!
1)[url=https://skytent.by/]билборд минск[/url] -Рекламные щиты ( билборды ) в Беларуси – самый востребованный тип наружной рекламы, размещаемый в непосредственной близости от автомобильных дорог.
2)[url=https://skytent.by/]металлоконструкции минск[/url] -Весьма значимыми и присущими для любой постройки элементами являются металлические навесы, которые как нельзя лучше защищают от осадков или падающей листвы.
3)[url=https://skytent.by/]тенты минск[/url] -Изготовление тентов и использование в быту или на производстве тентовых конструкций – кратчайший способ быстрого сооружения необходимого помещения или дополнения уже имеющегося.
4)[url=https://skytent.by/]тентовая торговая палатка минск[/url] -Это одна из актуальнейших конструкций, распространенных по бесчисленному количеству городов и поселков.
http://tpower.ru/forum/index.php?members/andreaskad.137/
http://www.navsparkforum.com.tw/memberlist.php?mode=viewprofile&u=5646
http://krovinka.com/user/Andreastvm/
http://0668ysw.com/home.php?mod=space&uid=96819
https://forum.tp-link.com/member.php?478132-snegiroxko

2018-11-07 15:01:39
Andreaskbe
Доброго времени суток друзья!
1)[url=https://skytent.by/]билборд минск[/url] -Рекламные щиты ( билборды ) в Беларуси – самый востребованный тип наружной рекламы, размещаемый в непосредственной близости от автомобильных дорог.
2)[url=https://skytent.by/]металлоконструкции минск[/url] -Весьма значимыми и присущими для любой постройки элементами являются металлические навесы, которые как нельзя лучше защищают от осадков или падающей листвы.
3)[url=https://skytent.by/]тенты минск[/url] -Изготовление тентов и использование в быту или на производстве тентовых конструкций – кратчайший способ быстрого сооружения необходимого помещения или дополнения уже имеющегося.
4)[url=https://skytent.by/]тентовая торговая палатка минск[/url] -Это одна из актуальнейших конструкций, распространенных по бесчисленному количеству городов и поселков.
http://www.sirfmobile.com/forum/memberlist.php?mode=viewprofile&u=14283
http://adm-djurtjuli.ru/index/8-31922
http://www.d3scene.com/forum/members/steklodelddu.html
http://best-mania.xf.cz/profile.php?lookup=16533
http://alatmony.net/profile.php?lookup=422684

2018-11-07 15:01:39
Andreasmpn
Привет друзья!
1)[url=https://skytent.by/]билборд минск[/url] -Рекламные щиты ( билборды ) в Беларуси – самый востребованный тип наружной рекламы, размещаемый в непосредственной близости от автомобильных дорог.
2)[url=https://skytent.by/]металлоконструкции минск[/url] -Весьма значимыми и присущими для любой постройки элементами являются металлические навесы, которые как нельзя лучше защищают от осадков или падающей листвы.
3)[url=https://skytent.by/]тенты минск[/url] -Изготовление тентов и использование в быту или на производстве тентовых конструкций – кратчайший способ быстрого сооружения необходимого помещения или дополнения уже имеющегося.
4)[url=https://skytent.by/]тентовая торговая палатка минск[/url] -Это одна из актуальнейших конструкций, распространенных по бесчисленному количеству городов и поселков.
http://www.serpentorslair.info/memberlist.php?mode=viewprofile&u=1078
http://8.weicaifu.com/home.php?mod=space&uid=115602
http://forums.pnwfahren.com/member.php?60645-snegirotgf
http://www.crazys.cc/forum/space-uid-352934.html
http://bogaromes.euweb.cz/profile.php?lookup=47961

2018-11-07 15:00:48
Andreasvga
Приветствую Вас дамы и господа!
1)[url=https://skytent.by/]билборд минск[/url] -Рекламные щиты ( билборды ) в Беларуси – самый востребованный тип наружной рекламы, размещаемый в непосредственной близости от автомобильных дорог.
2)[url=https://skytent.by/]металлоконструкции минск[/url] -Весьма значимыми и присущими для любой постройки элементами являются металлические навесы, которые как нельзя лучше защищают от осадков или падающей листвы.
3)[url=https://skytent.by/]тенты минск[/url] -Изготовление тентов и использование в быту или на производстве тентовых конструкций – кратчайший способ быстрого сооружения необходимого помещения или дополнения уже имеющегося.
4)[url=https://skytent.by/]тентовая торговая палатка минск[/url] -Это одна из актуальнейших конструкций, распространенных по бесчисленному количеству городов и поселков.
http://115.29.139.229/home.php?mod=space&uid=2692601
http://stroyportal.obzor-xostingov.ru/user/steklodelxic/
http://gestalt.dp.ua/user/Karlosmys/
http://novanews.com.ua/user/steklodellis/
http://stamp.od.ua/user/Karlossvc/

2018-11-07 11:29:27
Andreasutr
Здравствуйте господа!
1)[url=https://skytent.by/]билборд минск[/url] -Рекламные щиты ( билборды ) в Беларуси – самый востребованный тип наружной рекламы, размещаемый в непосредственной близости от автомобильных дорог.
2)[url=https://skytent.by/]металлоконструкции минск[/url] -Весьма значимыми и присущими для любой постройки элементами являются металлические навесы, которые как нельзя лучше защищают от осадков или падающей листвы.
3)[url=https://skytent.by/]тенты минск[/url] -Изготовление тентов и использование в быту или на производстве тентовых конструкций – кратчайший способ быстрого сооружения необходимого помещения или дополнения уже имеющегося.
4)[url=https://skytent.by/]тентовая торговая палатка минск[/url] -Это одна из актуальнейших конструкций, распространенных по бесчисленному количеству городов и поселков.
http://pkfso.ru/user/steklodelzbf/
http://wizza.wz.cz/profile.php?lookup=460
http://kfaktiv.ru/user/Andreasvmo/
http://sportpharma.ru/forum/memberlist.php?mode=viewprofile&u=23656
http://player.ru/member.php?u=128755

2018-11-07 11:29:27
Andreaslkp
Привет господа!
1)[url=https://skytent.by/]билборд минск[/url] -Рекламные щиты ( билборды ) в Беларуси – самый востребованный тип наружной рекламы, размещаемый в непосредственной близости от автомобильных дорог.
2)[url=https://skytent.by/]металлоконструкции минск[/url] -Весьма значимыми и присущими для любой постройки элементами являются металлические навесы, которые как нельзя лучше защищают от осадков или падающей листвы.
3)[url=https://skytent.by/]тенты минск[/url] -Изготовление тентов и использование в быту или на производстве тентовых конструкций – кратчайший способ быстрого сооружения необходимого помещения или дополнения уже имеющегося.
4)[url=https://skytent.by/]тентовая торговая палатка минск[/url] -Это одна из актуальнейших конструкций, распространенных по бесчисленному количеству городов и поселков.
http://dog-32.ru/index/8-27749
http://jahandigital.ir/user/Karlosstt/
http://narkologiya.kz/user/steklodeljuo/
http://school12mgn.ru/index/8-27474
http://10000.hol.es/user/Andreaspns/
Ваше имя: *
Текст записи: *
Имя:

Пароль:



Регистрация

Вы программируйте ради
денег
15% (31)
славы
4% (8)
удовольствия
33% (68)
знаний
20% (40)
просто так
5% (10)
все вместе
23% (47)

Проголосовало: 204
- А у админов категории как у инженеров бывают?
Ну там типа второй категории, первой категории...
- Да бывают хороший или плохой!
Рейтинг: 4.5/10 (6)
Посмотреть все анекдоты