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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Qt неподдерживает exception. C чем это связано? Может на других OC нет их поддержки? 
:(
    Опции темы
Lazin
Дата 30.11.2009, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



Цитата(djamshud @  30.11.2009,  11:23 Найти цитируемый пост)
fopen(file,"w") потерпит фэйл, _errno станет ERR_FOPEN. При этом в _самом_ классе ее обрабатывать не нужно - не его это дело орать "ммммать, что-то пошло наперекосяк!".

понимаешь, в чем фишка, любой императивный код, по сути, это последовательность связанных друг с другом операций, последующие операции как правило зависят от успешности выполнения предыдущих, то есть мы опять пришли к тому, что разработчик в праве проигнорировать код ошибки после чего причину последующих ошибок будет сложно установить
но я уже начал повторяться, мы идем по кругу smile

Цитата(djamshud @  30.11.2009,  11:23 Найти цитируемый пост)
Если вопрос касался детализации ошибки защищенного диска, то нужно добавить еще один тип ошибки. 

и еще один и еще, тебе говорит о чем-нибудь словосочетание "комбинаторный взрыв"? smile
если смотреть только на один уровень, скажем, на класс IO, то все почти OK, немного грязновато и все, но если у нас есть подсистема, в которой все это используется совместно, и нам нужно возвращать из нее коды ошибок, то вещи очень быстро перестают быть управляемыми
поясню на примере, представь, что у тебя есть ф-я main, это самый высокий уровень, из нее вызываются всякие ф-ии, методы классов, это более низкий уровень, каждый метов/ф-я этого уровня используют разные подсистемы, которые составляют системный уровень приложения - ввод/вывод, и так далее
так вот, все ошибки, которые не могут быть обработаны и должны привести к завершению приложения должны попасть в main, так? происходит какая-то ошибка на уровне системы, она не может быть обработана на том-же уровне, естественно, файл или сокет не в курсе, нужно-ли завершать приложение или нет, поэтому происходит раскрутка стека, ошибка идет на "средний" уровень, оказывается что она там то-же не может быть обработана, после чего она передается на самый высокий уровень и там происходит запись сообщения в лог и завершение работы.
Так вот, представь, о каком количестве кодов ошибок должен знать самый верхний уровень, в случае исключений, все просто, пишешь:
Код

int main()
{
...
    catch(std::exception const& e)
    {
        LOG_ERROR((e.what()));
        return -1;
    }
}

в общем, исключения улучшают модульность, клиентскому коду не нужно знать обо всем, что может произойти с объектом класса, исключения - полиморфны, поэтому зачастую можно просто игнорировать их тип, в большинстве случаев, для того, что-бы приложение корректно обработало ошибку, достаточно самого факта того, что исключение произошло. С кодами ошибок придется м****я тем больше, чем больше проект.
Ну еще стоит вспомнить win32 api, а точнее то, сколько ошибок возникает из-за неправильной проверки результатов выполнения той или иной ф-ии. К примеру, CreateFile может вернуть NULL или INVALID_HANDLE_VALUE, в разных случаях, при этом еще нужно получить код ошибки ф-ей GetLastError. 
PM MAIL Skype GTalk   Вверх
djamshud
Дата 30.11.2009, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


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

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



>и еще один и еще

Ну так новый тип исключения тоже нужно будет создавать.

>Так вот, представь, о каком количестве кодов ошибок должен знать самый верхний уровень, в случае исключений, все просто, пишешь

На словах то оно все так и обстоит. Но на деле мои программы вообще никогда не обрабатывают ошибки в main или просто через большое количество вызовов.

В общем то вопрос у нас уперся в принципиально разные подходы к проектированию ПО. ИМХО продолжать полемику (в ключе эксепшин VS код возврата) дальше нет смысла. Как обычно в холиворах стороны высказали все свои доводы, но каждый остался при своем.

>Ну еще стоит вспомнить win32 api

Вот это точно вспоминать не стоит. Я уже давно забыл и не жалею.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Lazin
Дата 30.11.2009, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



Цитата(djamshud @  30.11.2009,  14:34 Найти цитируемый пост)
Ну так новый тип исключения тоже нужно будет создавать.

даже если так, исключения полиморфны, а коды ошибок нет(если речь идет не о чем-нибудь вроде boost::system)

Цитата(djamshud @  30.11.2009,  14:34 Найти цитируемый пост)
На словах то оно все так и обстоит. Но на деле мои программы вообще никогда не обрабатывают ошибки в main или просто через большое количество вызовов.

Цитата(djamshud @  30.11.2009,  14:34 Найти цитируемый пост)
В общем то вопрос у нас уперся в принципиально разные подходы к проектированию ПО.

видимо, наши программы решают сильно разные по сложности задачи smile

Цитата(djamshud @  30.11.2009,  14:34 Найти цитируемый пост)
ИМХО продолжать полемику (в ключе эксепшин VS код возврата) дальше нет смысла. Как обычно в холиворах стороны высказали все свои доводы, но каждый остался при своем.

ОК, мне уже надоело раз за разом повторять прописные истины smile 
PM MAIL Skype GTalk   Вверх
djamshud
Дата 30.11.2009, 14:53 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


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

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



>видимо, наши программы решают сильно разные по сложности задачи

Ох, сколько высокомерия, мой уважаемый, опытный и толстый собеседникsmile.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
bsa
Дата 30.11.2009, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



djamshud, просто вызывают сомнения твои высказывания по поводу работы с большими проектами, так как у тебя глаза разбегаются от форматирования. А без него совершенно невозможно анализировать код, имеющий более одного уровня вложенности блоков - осознание необходимости форматирования приходит новичкам не позже, чем через пару месяцев, после начала практического освоения языка.
PM   Вверх
djamshud
Дата 30.11.2009, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


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

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



>без него совершенно невозможно анализировать код

Вы меня извините, но вы говорите совершеннейшую чушь. То, что нормально для одного, совершенно неприемлемо для другого, я это прекрасно понимаю, но почему вы выдвигаете свою (на самом деле большинства, конечно) точку зрения единственно верной?

>вызывают сомнения твои высказывания по поводу работы с большими проектами

А я разве где-то так высказывался? О своих личных и рабочих проектах я скромно умолчал, если я не ошибаюсь.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
maxxant
Дата 30.11.2009, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Lazin @  30.11.2009,  06:44 Найти цитируемый пост)
не вижу поводов для язвительности, лично я считают GUI программистов низшей кастой  


я искренне.

PS: про гуи да, нелюблю, и почти не занимаюсь им тож. другое дело драйверок пол линух написать (жаль тока на сях), или демон какой нить.
PM MAIL   Вверх
lom2k
Дата 6.3.2010, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ну и нафлудили smile

Использовать или не использовать ++ exceptions дело сугубо личное.

Я например не использую, хотя пишу на плюсах.

Причины: 

1. раскрутка стека при исключениях операция недешевая в сравнении с обычным кодом возврата
2. по мне лучше использовать функцию инициализации объекта с кодом возврата, чем исключение в конструкторе
3. понимание кода if {} else {} проще чем многоуровневые try {} except {} finally {}
4. переносимость

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


PM MAIL   Вверх
Любитель
Дата 9.3.2010, 01:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

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



Цитата(Lazin @  29.11.2009,  02:32 Найти цитируемый пост)

что в этом плохого, я весь вечер этого и добиваюсь smile  

Lazin, раз тема ещё (оказывается!) жива и я её увидел - ты этого добился..
Холиварам место в холиварах (хотя такое уже и было..).


--------------------
PM MAIL ICQ Skype   Вверх
Lazin
Дата 9.3.2010, 01:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



Цитата(lom2k @  6.3.2010,  16:09 Найти цитируемый пост)
Ну и нафлудили 

Использовать или не использовать ++ exceptions дело сугубо личное.

Я например не использую, хотя пишу на плюсах.

Причины: 

1. раскрутка стека при исключениях операция недешевая в сравнении с обычным кодом возврата
2. по мне лучше использовать функцию инициализации объекта с кодом возврата, чем исключение в конструкторе
3. понимание кода if {} else {} проще чем многоуровневые try {} except {} finally {}
4. переносимость

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


я уже один раз нафлудил, а вы хотите, что-бы я еще раз нафлудил? еще чего!

Цитата(Любитель @  9.3.2010,  01:02 Найти цитируемый пост)
ты этого добился..

пойду, открою бутылку шампанского smile 
PM MAIL Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




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


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

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