Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> function error() vs object::setError() vs catch (E 
V
    Опции темы
 
какой механизм обработки используете Вы?
function error() [ 1 ]  [7.69%]
object::setError() [ 0 ]  [0.00%]
catch (Exception $e) [ 12 ]  [92.31%]
Всего проголосовавших: 13
В этом опросе возможен один вариант ответа
Гости не могут голосовать 
Vaulter
  Дата 5.7.2007, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



тема такая:
function error() vs object::setError() vs catch (Exception $e)

у кого какие конструктивные мысли на этот счет.
плюсы минусы подходов.



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


Новичок



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

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



кэтч конечно. примущества те же, что и у объектно-ориентированного подхода над структуным )) писать в ОО-стиле, не используя эксепшены -- по меньшей мере плохой стиль. что мы зря переходили на пхп5. что зря на пхп-5 переходили?? давайте еще и старыми классами попльзоваться. 

опрос типа - "каким подходом вы пользуетесь: современным или устаревшим?"
PM MAIL   Вверх
Vaulter
Дата 5.7.2007, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Scorched,  smile  smile 


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


9/10 программиста
***


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

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



Имхо, еще не хватает варианта trigger_error() with set_error_handler(). А вообще, конечно, try catch, хотя у него есть некоторый недостаток, по сравнению со всеми другими способами - тормознутость.

Это сообщение отредактировал(а) sTa1kEr - 5.7.2007, 19:03
PM MAIL   Вверх
Scorched
Дата 5.7.2007, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



sTa1kEr

тогда и set_exception_handler добавить ))
насчет быстродействия. но ведь в случае если эксепшен не возник, то наличие трай-кетч блока, "замедляет" выполнение программы не более, чем обычный иф, а если возник - то тут уже сам эксепшн важнее того, что он чуть дольше обрабатывается..
PM MAIL   Вверх
sTa1kEr
Дата 5.7.2007, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


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

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



Цитата(Scorched @  5.7.2007,  19:16 Найти цитируемый пост)
set_exception_handler
 нужен только для не перехваченных экзепшенов, а зачем кидать экзепшены и не перехватывать их? Зачем они тогда вообще нужны? smile
А вот trigger_error() действительно иногда используется и, имхо, чаще, чем какая-нибудь function error().
Цитата(Scorched @  5.7.2007,  19:16 Найти цитируемый пост)
насчет быстродействия. но ведь в случае если эксепшен не возник, то наличие трай-кетч блока, "замедляет" выполнение программы не более, чем обычный иф, а если возник - то тут уже сам эксепшн важнее того, что он чуть дольше обрабатывается.. 

Да, по сути верно smile Но экзепшен не обязательно должен выкидываться только при критической ошибке, может быть ситуация когда приложение нормально работает не смотря на экзепшенны (не доступен удаленный сервер - просто выведем предупреждение, отключаем соответствующий модуль и работаем дальше; произошла ошибка при парсинге данных - пишем в лог и парсим дальше, итп). В общем производительность - это, имхо, единственный минус конструкций try catch, но плюсы, перевешивают этот минус. Про минусы остальных подходов - даже не буду говорить - это и так очевидно.

Кстати, как то видел эмуляцию try catch в PHP 4, конструкции вида:
Код

$error = false;
do
{
   // Работаем
   if ($not_vaild_var) 
   {
      $error = "Ошибка!";
      break;
   }
   // Работаем дальше, т.к. если бы было что-то не так, то мы бы уже вылетели из фиктивного цикла :)
}
while(false)
if ($error !== false)
{
   //
}

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

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


 




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


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

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