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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Exception vs Error Code, Как вы реализуете Error Management? 
:(
    Опции темы
 
Как вы реализуете Error Management?
Всегда Exception-ы [ 29 ]  [39.19%]
Когда необходимо Error Codes, в остальных случаях Exception-ы [ 32 ]  [43.24%]
Когда необходимо Exception-ы, в остальных случаях Error Codes [ 8 ]  [10.81%]
Всегда Error Codes [ 5 ]  [6.76%]
Всего проголосовавших: 74
В этом опросе возможен один вариант ответа
Гости не могут голосовать 
neutrino
Дата 18.6.2008, 07:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



Цитата(neutrino @  17.6.2008,  11:53 Найти цитируемый пост)
Интересно отметить, что ни в одном фундаментальном фреймворке вообще нет кодов возврата. Например в .NET-е или в Java. 


Цитата(neutrino @  17.6.2008,  11:53 Найти цитируемый пост)
Интересно отметить, что ни в одном фундаментальном фреймворке вообще нет кодов возврата. Например в .NET-е или в Java. 


Цитата(neutrino @  17.6.2008,  11:53 Найти цитируемый пост)
Интересно отметить, что ни в одном фундаментальном фреймворке вообще нет кодов возврата. Например в .NET-е или в Java.

Вот меня заело smile


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
skyboy
Дата 18.6.2008, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


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

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



Цитата(neutrino @  18.6.2008,  06:35 Найти цитируемый пост)
Вот меня заело

видать, реально в душу запало  smile 
PM MAIL   Вверх
mr.DUDA
Дата 18.6.2008, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Исключения нельзя использовать в real-time приложениях - слишком большие накладные расходы, по крайней мере в .NET

Но коды ошибок есть зло.  smile 


--------------------
user posted image
PM MAIL WWW   Вверх
nickless
Дата 19.6.2008, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

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



Для обработки ошибок - исключения (если они есть и их можно использовать), для всего остального - всё остальное smile 

Ситуации вроде этой
Цитата(skyboy @  17.6.2008,  12:19 Найти цитируемый пост)
имел в виду ситуацию, когда подстрока в строке отсутствует 

исключительными не являются, соответственно можно например вернуть -1 smile 


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
neutrino
Дата 19.6.2008, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



Цитата(mr.DUDA @  18.6.2008,  19:41 Найти цитируемый пост)
Исключения нельзя использовать в real-time приложениях - слишком большие накладные расходы, по крайней мере в .NET

С этим согласен. Но и с этим:

Цитата(mr.DUDA @  18.6.2008,  19:41 Найти цитируемый пост)
Но коды ошибок есть зло. 

тоже  smile 


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
LSD
Дата 19.6.2008, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Тут есть тонкость, есть коды ошибок, а есть коды возврата. И это две большие разницы smile


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
neutrino
Дата 19.6.2008, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



Цитата(LSD @  19.6.2008,  11:10 Найти цитируемый пост)
Тут есть тонкость, есть коды ошибок, а есть коды возврата. И это две большие разницы

Гы smile Какая разница? Вон -1, если нет подстроки - это что?


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
JackYF
Дата 19.6.2008, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

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



Цитата(neutrino @  19.6.2008,  12:18 Найти цитируемый пост)
это что? 

индекс  smile 

По сабжу - больше люблю исключения. Но юзать приходится больше коды возврата - код на С ещё никто не отменял.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
neutrino
Дата 19.6.2008, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



Мдя. Вопрос надо было перефразировать. Это касается только .NET/Java


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
LSD
Дата 19.6.2008, 17:18 (ссылка) |    (голосов:7) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Цитата(neutrino @  19.6.2008,  14:18 Найти цитируемый пост)
Какая разница? Вон -1, если нет подстроки - это что?

Сам спросил, счас будет многа букф smile

Есть функция которая что-то делает и возвращает некий результат. При корректных: параметрах, внутреннем состоянии и внешних условиях, она возвращает некий результат работы, если какие-то условия не выполняются то надо об этом сообщить вызывающему. Вот тут и возникают вопросы:

1. Можно вообще вернуть такое значение которое бы сигнализировало об ошибке? 
Например 1 / 0 - среди целых нет такого значения которое могло бы сигнализировать о том, что произошло деление на ноль, потому тут будет ексепшн. А вот для 1.0 / 0.0 такое значение есть, и тут будет positive infinity.
Ну и конечно конструкторы из которых вообще ничего нельзя вернуть. Или прокси объекты которые осущесвляют ленивую закгрузку/инициализацию и т.п.

2. По логике работы функции: насколько эта ситуация является "черезвычайной"?
По идее при нормальной работе приложения эксепшенов должно быть минимум, только по внешним поводам котрые нельзя контролировать. Т.е. если проверили входные параметры на валидность, убедились что система в "правильном состоянии", эксепшены должны быть только если что-то не так с внешними условиями.
Тот же поиск строки в подстроке: там есть перегруженных метод который позволяет искать начиная с определенной позиции. Если строка не найдена -1 ибо проверить есть ли такая подстрока можно только самому реализовав подобный метод. А вот если индекс выходит за границы строки будет эксепшн, потому что программист может и должен следить за тем, чтобы он не выходил за границы.
Другой пример чтение из потока. Когда поток заканчивается, мы получаем -1, потому что мы совершенно точно знаем, что поток рано или поздно должен закончится. А вот когда происходят внешние проблемы (разорвалось соединение, проблемы с диском) мы получаем эксепшн ибо ситуация непредвиденная и по хорошему ее быть не должно.

Т.е. код возврата это одно из возвращаемых значение, это не ошибка в работе функции, это ее результат. А сама функция отработала корректно. Просто некоторые из значений для вызывающего кода могут обозначать ошибку (а могут и нет).


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
mr.DUDA
Дата 23.6.2008, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Плохой пример кодов возврата - COM с его HRESULT. Хороший пример - возврат функцией true/false для успеха или неудачи. ИМХО.


--------------------
user posted image
PM MAIL WWW   Вверх
Mephisto
Дата 23.6.2008, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


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

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



Я юзаю в основном только исключения. Ибо наглядно, удобно, очевидно... Если приложение многопоточное, то отдебагить методы в которые заходят несколько потоков практически невозможно, если не использовать исключения. 
Разумно их использовать если код будет внутри либы, тогда возможен только вариант с кодами ошибок.

Цитата(chipset @  17.6.2008,  01:21 Найти цитируемый пост)
А если пишешь DLL которая будет юзаться, к примеру дельфой или джавой? 

Дельфина, между прочим, асилит показать внутреннее исключение либы. Используя апи висты, я несколько раз отлавливал внутривистовое исключение операционки. Дельфина под дебагом останавливается, но стек не раскручивается после продолжения.
PM   Вверх
neutrino
Дата 19.7.2009, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



Приветствую!

Собственно, понятное дело, что если подстрока не нашлась в строке надыть вернуть код ошибки. Но вот с этим: 
Цитата(mr.DUDA @  23.6.2008,  18:14 Найти цитируемый пост)
Хороший пример - возврат функцией true/false для успеха или неудачи. ИМХО. 

Несогласен. Если функция не выкинула эксепшн - то все чин чинарем. Иначе код, который вызывает несколько таких функций будет не очень читабелен.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
morfus
Дата 28.8.2009, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Я вообще в последнее время склоняюсь что надо брать пример с перла... (для web примерно так - нет ошибки всё хорошо, есть ошибка тупо выдавать 500 или 404 и не париться)

Т.е тупо "программа выполнила фигню и будет закрыта"

Это сообщение отредактировал(а) morfus - 28.8.2009, 18:56
PM MAIL WWW   Вверх
bilbobagginz
Дата 28.8.2009, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

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



в принципе в unix есть переменная errno.
т.е. функция может вернуть какой-то код, и записать что-то в добавок в errno.
получится что-то вроде exception, но вложения перепишут errno, и фиг поймёшь что произошло точно.

Lazin
я рассуждаю проще:
язык C позволяет только коды ошибок. там - только коды ошибок.
C++,Java и т.д. позволяют коды ошибок и exceptions, которые явно более наглядны, и позволяют больше. поэтому в чисто c++/java, etc. пользуемся exception-ами,
за исключением работы с внешними модулями:
напр. приложение на C++ юзает либу на C, и т.п.

neutrino, читани, полезный материал

smile


--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

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

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


 




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


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

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