
За последние 60 дней ни разу не выходила
Сайт листа:
http://codeguru.ru
Открыт:
21-09-2003
Пре-модерация: Нет
Адрес для писем в лист: comp.soft.prog.prog-list@subscribe.ru
Адрес
модератора: comp.soft.prog.prog-owner@subscribe.ru
Статистика
0 за неделю
Ответы:
Hello Ivan,
Saturday, January 17, 2004, 2:49:52 PM, you wrote:
Спасибо, за ликбез! Очень признателен...
По-поводу исключений: Но ведь описания болков try, catch(для С++) тоже
занимает место в коде... Как я понял можно какой-то большой кусок кода
заключить в try, а после него расписать catch-и с возможными
исключениями(описанными где-то в другом месте)?
P.S. А то же деление на ноль, тоже придется проверять, чтобы
сгенерировать ошибку (throw)? Или я что-то недопонял...
Velora
Да, действительно, всё это сделано для того, чтобы не проверять
каждый вызов какой-то функции из какой-то библиотеки на ошибку,
а сразу вызывать их в блоке try{} и потом уже catch'ем ловить ошибки.
Можно не расписывать catch'и, а сделать классы
исключений, унаследованные от одного класса и ловить этот -
родительский класс. (см. Страуструпа)
В это конкретном случае смотря что ты хочешь получить и смотря какую
реализацию исключений используешь ;)
Можно ловить hardware exceptions, (среди которых
STATUS_FLOATING_DIVIDE_BY_ZERO и STATUS_FLOATING_DIVIDE_BY_ZERO
- думаю назначение оных понятно :) для этого используются
"расширения языка C от микрософт" ;) (см. MSDN)
Можно использовать стандартную библиотеку C++ - там есть много чего
интересного. Правда насчет деления на 0 надо уточнить.. Но то, что
хардварные исключения она не ловит это точно.
Если же пишешь свои некие мега-вычисления ;) то желательно бы передать
кроме ошибки деления на 0 и некую информацию - почему это произошло, в
каком месте, с какими данными. Тут уже самому надо все проверять и
выбрасывать исключения своего типа.
Нет - идея в том, чтобы нужный участок кода был вызван ТОЛЬКО В ТОМ СЛУЧАЕ, ЕСЛИ
ПРОИЗОШЛО деление на ноль. То есть, Вы должны только написать, что делать в том
случае, когда произошло деление на ноль (хотя бы знаменатель изменить принудительно,
или еще что). В противном случае произойдет то, что и происходит - аварийное
завершение программы - это код по умолчанию
С уважением,
Борис Сурин, surin_***@m*****.ru
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru
-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru
http://subscribe.ru/ mailto:ask@subscribe.ru
В сообщении от Суббота 17 Январь 2004 23:11 Velora написал:
Да, конечно, место занимают, но позволяют гораздо более наглядно все
отобразить.
Да, без сомнения - один try-блок, и много разных catch.
Многие исключения генерируются без явного указания throw (вернее, throw
указан в реализации библиотечного кода). Например, то же исключение
деление на ноль произойдет, без тобой написаного throw.
С уважением.
Дима Федотов.
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru
-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru
http://subscribe.ru/ mailto:ask@subscribe.ru
Конечно, можно, но зачем? Освойте эту технику - потом Вас от нее зауши не оттащишь
:))
Если серьезно,то программа с обработкой исключений работает быстрее, так как
не надо постоянно проверять допустимость аргументов, правильность вызова функций
и тому подобное. Кроме того, если Вы не будете понимать, как писать обработку
исключений - не сможете читать умные книги и программы - на С++ - это давно уже
стандарт
С уважением,
Борис Сурин, surin_***@m*****.ru
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru
-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru
http://subscribe.ru/ mailto:ask@subscribe.ru