![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
Zerstroer, так я не спорю
![]() Но на сегодня это систематизированная обработка ошибок, которая в PHP 5 должна заменить все пользовательские разработки ![]() -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: 5 Всего: 102 |
насчет PHP сказать ничего не могу, особой необходимости в них нет.
но если говорить скажем об десктопном приложении, там без них - никак. и основная суть у них обработка не сколько самих исключений, сколько логическое изменение логики работы. допустим нам необходимо прочитать из реестра данные о названиях файлов которые должна удалить наша программа 1. этап инициализация приложения. - подгрузка требуемых dll - создание формы - загрузка данных реестра - оторажение загруженных данных так вот внутри этого логического блока у нас может произойти миллион и одна ошибка. (нет dll, нет прав на доступ к реестру, нет нужной ветки, нехватка памяти и т.п.)
и чтобы не писать в скрипте миллион проверок на любую из ошибок мы используем всего ОДНО исключение т.к. нам не важно что произошло, а важно сообщить пользователю что дальнейшая работа приложения невозможна. 2. далее нам нужно удалить все файлы, для этого мы пишем цикл внутри которого вызываем функцию удаления. если удаление провалилось (файл только для чтения, нет прав и т.п.) то исключение подхватывает эту ошибку и помечает - файл не был удален по такой-то причине и цикл продолжается дальше.. а вообще, по сути темы - если не видишь и не чувствуешь разницы между приорой и мерседесом. покупай приору. - золотое правило. тут также, рано или поздно ты упрешься в тот момент, что твоя схема обработки ошибок занимает слишком много кода и сама содержит ошибки - тогда ты и придешь к пониманию идей исключения..а может и нет, зависит от проектов с которыми работаешь) -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
![]() да ладно ![]() -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: 5 Всего: 102 |
по больному задел?! )))
тут все зависит от его использования. как я вижу PHP на 90% испольузется как полу-программирование, но никто ведь не запрещает тебе на нем написать свой сервис который будет работать так-же как я описывал (ну за исключением того, что вместо формы будет скажем - удаленный терминал) -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
Zerstroer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 8.8.2007 Где: Алма-Ата Репутация: 1 Всего: 3 |
Исключения - это "ОФИГЕННАЯ ВЕСТЧ"... только, применять их нужно только по мере необходимости. Во всей ветке нет ни единого ложного утверждения. Рассматривайте исключения как удобный и эффективный инструмент. Целесообразность их использования - зависит от многих причин. Не нужно насиловать систему и себя, если вы не до конца осознаете весь профит от их использования - пользуйтесь возвратами статусов из функций, в вашем случае на данном этапе профессионального развития этот способ будет работать эффективнее. Вкуснее будет осознать цимес от исключений - если перепроектируете систему заново. Пишу основываясь на собственном опыте, сам сравнительно недавно "просёк фишку" исключений. -------------------- In silico |
|||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
PS
Zerstroer, ты абсолютный позитив ![]() +1 Это сообщение отредактировал(а) Gold Dragon - 3.7.2012, 21:14 -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
Zerstroer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 8.8.2007 Где: Алма-Ата Репутация: 1 Всего: 3 |
![]() Главное, что бы конечный итог был определенным и вас не мучил вопрос использования исключений. -------------------- In silico |
|||
|
||||
Fortop |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Нет не должен. В ряде случаев приложение вообще не может никак повлиять на твои нештатные ситуации. Твоя задача поймать и корректно обработать все нештатные ситуации.
Это не зависит от исключения или статуса функции. Работа с исключениями, как уже было сказано выше, это просто другая идеология обработки ошибок и прочего. -------------------- Мир это Я. Живее всех живых. |
||||
|
|||||
krundetz |
|
|||
![]() Вечный странник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1400 Регистрация: 14.6.2007 Где: НН(Сормово) Репутация: 20 Всего: 69 |
Смысл в том, что при изменение способа обработки исключительной ситуации не нужно переписывать весь код, а достаточно изменить только обработчик исключений. Пример: У нас есть тридцать три места в которых возможно происхождение ошибки. У всех этих мест стой код ошибки, т.е. имеем 33 кода ошибки. Пусть у нас все ошибки обрабатываются одним способом, а именно выводом сообщения "извините такой страницы нет". Никаких сложностей при реализации. Время идет и количество мест потенциального возникновения ошибки возросло до 100, а кодов ошибок до 50. Вроде бы ничего страшного. Только вот и количество вариантов сообщения возросло до 5 и распределяется на эти 50 кодов. Вот в таком случае нам и помогут исключения. Вместо 50 кодов заводим 50 вариантов исключения. И если нам требуется поменять логику обработки какого то из них, идем в обработчик исключений и изменяем только его, не затрагивая остальной код. В традиционном подходе же придется изменить все места вывода сообщения об ощипке. Либо использовать обертку внутри которого будет свитч, т.е. по сути эмулировать работу исключений. Попробую вечером это кодом показать. Это сообщение отредактировал(а) krundetz - 4.7.2012, 17:36 |
|||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
krundetz, до появления исключений было простое решение. Создаём класс для обработки ошибок. И так же при возникновении определённой ошибки посылаем определённый код в этот класс и получаем "нужную реакцию". Появление исключений сделало тоже самое, соответственно расширив функционал и приведя всё к "стандартному" виду. Как я выше писал, что если приложение работало со своим обработчиком ошибок, то внедрение механизма исключений по крайней мере лишнее время, а следственно и деньги.. Для новых разработок, да, этот механизм позволит не изобретать велосипед. Хотя опять же всё зависит от размеров проекта, для сайта из пяти страниц это будут огромные трудозатраты Добавлено через 3 минуты и 45 секунд ну есть совсем простой вариант, просто пользоваться "@" ![]() Это сообщение отредактировал(а) Gold Dragon - 5.7.2012, 07:27 -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Gold Dragon, внимательно читаем свой горячечный бред.
У вас вылетела сетевая карта на сервере БД. Нештатная ситуация? Да! Вы можете от нее избавиться благодаря программисту? Нет! Все что может сделать программист - это поймать любую подобную ситуацию корректно обработать -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
Fortop, у меня нет проблем ни со зрением, ни с психикой, так что не нужно выделять "особо умные мысли". Я способен нормально понять логику в предложениях и осознать смысл сказанного.
еперь про "сетевую карту".. А причём тут вообще это??? Мы говорим о программе, а не о железе(!). И научись не продвигать свою мысль, а прислушиваться к чужим. По форуму я вижу только твои рассуждения, но ни разу пример кода. Ну и про исключения.. Если внимательно почитать тему, то давно уже все пришли к общему (в той или иной степени) мнению. Ответь пожалуйста, как ты решал эти проблемы когда не было PHP5? Это сообщение отредактировал(а) Gold Dragon - 5.7.2012, 12:54 -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
teroni |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 15.5.2007 Где: Днепропетровск Репутация: 8 Всего: 22 |
Исходя из того, что за 3 дня существования темы никто так и не показал явного выиграша при использовании исключений делаем вывод, что смысл исключений неочевиден
![]() Тоже считаю их больше стилем написания кода, нежели чем-то функционально полезным. |
|||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
нет, смысл есть. Т.е. в PHP5 разработчики заложили достаточно (или относительно) продуманный интерфейс для "отлова ошибок". И для разработки больших проектов этот механизм желательно задействовать. Конечно нет смысла это делать для существующих проектов, т.к. это достаточно большие трудозатраты. И так же нет смысла делать для "сайтов-визиток"
![]() -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
Sentox |
|
|||
как то так ![]() ![]() Профиль Группа: Участник Сообщений: 392 Регистрация: 27.1.2009 Где: Зимбабве Репутация: 7 Всего: 7 |
Да, с сетевой картой это не нештатная ситуация, это катастрофа. В контексте темы она не вписывается.
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |