Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2010, 21:57   #11
prizrak1390
-=PriZraK=-
Форумчанин
 
Аватар для prizrak1390
 
Регистрация: 12.12.2007
Сообщений: 399
По умолчанию

Уважаемый, Andkorol. Все что Вы написали мне ясно, но иногда если возникает исключение, лучше не показывать текста ошибки, который генерирует php, а показать что-то другое или вообще ничего не показывать. Поэтому я в некоторых случаях использую подавление ошибок. Но не потому, что я не знаю, как их исправить, а для того, что бы пользователь в случае нештатной ситуации не видел того, чего бы ему не надо видеть. Вотс. Отсюда и вопрос назревает, почему нельзя и как это влияет на работу кода? По крайней мере в 4й версии php такой проблемы не наблюдалось...
prizrak1390 вне форума Ответить с цитированием
Старый 07.11.2010, 22:44   #12
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

Цитата:
Сообщение от prizrak1390 Посмотреть сообщение
Johnatan, почему "@" использовать для подавления ошибок нельзя? Объясните пожалуйста.
Ваш недавний горький опыт с использованием @ вас ничему не научил?
Чтож...
Почему подавление ошибок это плохо:
1) Дебаг. Вы никогда в жизни не найдёте ошибку, которой не видите. При подавлении ошибки PHP всё равно выдаёт эту ошибку и даже прекратит работу скрипта "внезапно", но вам об этом ничего не скажет. Ни вам, ни пользователю, ни администратору ресурса, ни логам, ни серверу. И будете вы потом голову ломать, из-за чего же скрипт выполняется не полностью. А в сложных скриптах, в глубокоунаследованных классах вы никогда не найдёте эту ошибку. Вообще. Совсем.
2) Подавление ошибки на 10% медленнее чем её перехват и на 40% медленнее чем избежание этой ошибки.
3) Непредвиденные ситуации, когда подавление ошибки может изменить работу скрипта (ваш пример).

Самый главный из этих пунктов - первый. Использование обработки ошибки, вместо её подавления говорит о профессионализме программиста. Представьте, что вместо того, чтобы отремонтировать вашу машину в автомастерской вам бы посоветовали одевать наушники и слушать музыку погромче вместо ремонта авто. Насколько профессиональны такие механики?
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 07.11.2010, 22:47   #13
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
иногда если возникает исключение, лучше не показывать текста ошибки, который генерирует php, а показать что-то другое или вообще ничего не показывать. Поэтому я в некоторых случаях использую подавление ошибок. Но не потому, что я не знаю, как их исправить, а для того, что бы пользователь в случае нештатной ситуации не видел того, чего бы ему не надо видеть.
Ну тут вы что-то путаете...
Исключения - это исключения,обработка и вывод ошибок - это отладка.
По ссылкам есть информация о настройках "Уровня оповещений об Ошибках" - чего ради,я так понимаю, вы и используете @ "в некоторых случаях".
А вот использование для этого всего @ - это "прятанье головы в песок", и вот почему:
Цитата:
На сегодняшний день оператор @ подавляет вывод сообщений даже о критических ошибках прерывающих работу скрипта. Помимо всего прочего, это означает, что если вы использовали @ для подавления ошибок, возникающих при работе какой-либо функции, в случае если она недоступна или написана неправильно, дальнейшая работа скрипта будет остановлена без каких-либо уведомлений.
Модель такой ситуации :
Программист : - Так-с,ну-ка вызову я вот эту функцию func_x();...
Интерпретатор : - Так она с ошибками написана,потому "Warning : ....." тебе ....
Программист : - Да заткнись ты уже - потом профиксим,чё там!... @func_x();....

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

Суть именно в том,о чём я говорил в посте выше - в коде ошибок быть не должно, все "узкие" места должны быть чётко обработаны исключениями или дополнительными проверками результатов.
Ещё раз повторю:
сокрытие проблемы != решение проблемы
Andkorol вне форума Ответить с цитированием
Старый 07.11.2010, 22:59   #14
prizrak1390
-=PriZraK=-
Форумчанин
 
Аватар для prizrak1390
 
Регистрация: 12.12.2007
Сообщений: 399
По умолчанию

Спасибо, за ответы) Да, я столкнулся с такой ситуацией, однако одно дело писать под апачем на локалке, а другое на хостинге) Один и тот же код ведет себя по разному.
prizrak1390 вне форума Ответить с цитированием
Старый 08.11.2010, 02:57   #15
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

У вас на локалке Денвер стоит? Хотя вобщем-то неважно. Если на локалке винда, а на сервере никс, то уже можно ожидать разного поведения от скрипта. Поэтому я держу локальный сервер на вирт.машине на убунте.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 08.11.2010, 06:33   #16
prizrak1390
-=PriZraK=-
Форумчанин
 
Аватар для prizrak1390
 
Регистрация: 12.12.2007
Сообщений: 399
По умолчанию

Johnatan, Денвер это зло. У меня Miniserv. Всем спасибо, тема себя исчерпала)
prizrak1390 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему не работают сессии? Яр|/||< (^_^) PHP 6 14.07.2010 12:36
Сессии L_M PHP 3 06.06.2009 10:27
Сессии limon PHP 19 29.11.2008 22:46