Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> throw, try, catch 
:(
    Опции темы
mego4el
  Дата 31.5.2011, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 19.9.2010

Репутация: нет
Всего: нет



Пожалуйста, помогите разобраться в том, что это такое, и как его правильно использовать. Где можно об этом почитать?
P.S. только начал изучать ООП. 
PM MAIL   Вверх
afiskon
Дата 31.5.2011, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 31.3.2011
Где: Россия, Москва

Репутация: 1
Всего: 4



1. Исключения не имеют никакого отношения к ООП. В С++ есть много всего помимо ООП - вот исключения к примеру, шаблоны, в C++0x (грядущий стандарт) появились элементы функционального программирования.

2. Все просто. Речь идет о более удобной обработке ошибок. В чистом Си ошибки проверяются примерно так:

Код

if(function1(a,b,c) == STATUS_OK) {
  if(function2(d,e,f) == STATUS_OK {
  // ...
      if(function100500() == STATUS_OK) {
        return STATUS_OK;
      }
  // ...
  }
}
return STATUS_FAILED;


А вот аналогичный код на C++ :

Код

try {
  function1(a,b,c);
  function2(d,e,f);
  // ....
  function100500();
} catch(known_error& error) {
  // что-то не так
  throw SomeKindOfError(/*arguments*/);
}


В общем, если раньше мы возвращали код ошибки, который ОБЯЗАН быть проверен после вызова, что приводило к многим уровням вложенности и тд, то теперь мы просто "бросаем" объект с описанием ошибки. При этом на не важно, будет она проверена вызывающей функцией или функцией, которая вызвала вызывающую функцию или ... ну и так далее. Тот, кто знает, как обрабатывать данную ошибку, поймает и обработает ее. Или программа завершится аварийно.

Только не пытайтесь ловить с помощью try ошибки деления на ноль и иже с ними! Это просто способ передать объект вверх по цепочке вызовов.
PM MAIL WWW   Вверх
boostcoder
Дата 31.5.2011, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(afiskon @  31.5.2011,  17:26 Найти цитируемый пост)
в C++0x (грядущий стандарт) появились элементы функционального программирования

например что?
PM WWW   Вверх
afiskon
Дата 31.5.2011, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 31.3.2011
Где: Россия, Москва

Репутация: 1
Всего: 4



Цитата(boostcoder @ 31.5.2011,  17:28)
Цитата(afiskon @  31.5.2011,  17:26 Найти цитируемый пост)
в C++0x (грядущий стандарт) появились элементы функционального программирования

например что?

Речь была о лямбдах. В STL появились функции для массовых операций с контейнерами (типа map, но называется иначе - сейчас не скажу, как), которые потенциально могут быть хорошо распараллелины. Может, еще что-то, я сам еще разбираюсь только.
PM MAIL WWW   Вверх
boostcoder
Дата 31.5.2011, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(afiskon @  31.5.2011,  17:59 Найти цитируемый пост)
Речь была о лямбдах

я подумал что может что-то еще...
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0428 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.