информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыАтака на InternetСетевые кракеры и правда о деле Левина
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 С наступающим 
 Серьезная уязвимость в Apache Log4j 
 Крупный взлом GoDaddy 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Таки не *просто* хинт 07.03.09 22:29  Число просмотров: 2262
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> > Ни фига не хинт. Компилер должен сгенерировать код,
> который
> > ОБЯЗАН дернуть unexpected в случае нарушения
> спецификации.
> Ну, размер кода сейчас уже наверное нигде не критичен.
>
> > Все проверки - рантаймовые.
> Только в случае если эксепшн все же вылетит - это
> исключительная ситуация, быстродействие которой не
> критично.
Нет, функция, которая ничего не ловит может не иметь try блока. В случае с исключениями он нужен всегда (особенно при асинхронных исключениях типа VC-шных /EHa) и вот тут уже платит не тот кто испольует (исключение), а все.

> > Более того, все, что делается спецификациями
> исключений
> > можно довольно тривиально сделать и вручную. Обеспечив
> себе
> > при этом бОльшую гибкость в реакции на unexpected, да.
>
> А вот пример того, как этот хинт помогает при оптимизации:
> http://blogs.msdn.com/larryosterman/archive/2006/03/22/5583
> 90.aspx
Как описано в бусте: самая большая проблема со спецификациями в том, что программисты имеют тенденцию понимать их не так, как они на самом деле работают. Это не хинт компилятору, что исключения не бросаются (это он может обнаружить и просто посмотрев на тело), это ТРЕБОВАНИЕ обеспечить В РАНТАЙМЕ отсутствие иных исключений, кроме специфицированных. Если исключения асинхронные - в любом месте может случиться любое исключение и в эту простешую функцию добавится еще и try блок, который будет ловить и перебрасывать "хорошие" исключения и вызывать unexpected для "плохих". Если бы спецификации не было то же самое асинхронное исключение просто раскрутило бы стек этой функции и прошло дальше незамеченным.

> ИМХО, использование throw() для тривиальных функций типа
> bool empty() const throw() {return content.size();}
> может все же оказаться полезыным, и в то же время
> безопасным.
Для инлайновых функций вообще никаких спецификаций никогда не следует указывать.
<programming> Поиск 








Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2022 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach