|
|
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
13576000 - жесть! пробросить исключение только для того, что бы самому его и поймать в блоке!!! авторВ какую сторону развиваются исключения? ни в какую!!! авторМожно ли предположить, что в будущем механизм try ... catch будет использоваться для любых исключительных ситуаций и валидаций? Например, появится оператор продолжения скрипта (если ошибка не критична, но ее нужно зарегистрировать) или оператор повторения блока try, если ошибка исправлена? нет!!! просто вдумайся в пример - ме думает он будет тебе полезен!!! Код: php 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2012, 23:52 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
что бы было с чем сравнить! твой вариант... Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. извини, но это - капец!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 00:04 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
Shitbox2а к тем, кто знаком с более ООПшными языками. В какую сторону развиваются исключения? ООП и исключения это разные вещи. в Java исключения они работают аналогично. что значит развиваются?........... извините. но вы пишите бред. ну что сложного - взять и прочитать хотябы теорию из мануала. прочитать вдумчиво. попытаться понять в чем суть . почему сделали именно так. в чем удобство этих конструкций. помите. без этого вы так и будете задавать подобные вопросы, на которые даже отвечать нет желания, ибо видна ваша полная неосведомленность в этих вопросах. а следовательно объяснять бесполезно. вы не поймете, пока не сядете и серьезно не разберетесь. и наши примеры кода вам нифига непомогают. это видно невооруженным взглядом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 06:01 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
как-то так...извини, но это - капец!!! +1 исключения ради исключений)) топик бреда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 06:04 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
Читал и достаточно досконально. Пример на ПХП http://www.php.net/manual/ru/features.file-upload.errors.php#89374 Тут исключения используются, чтобы обработать ошибку при загрузке файлов. А это можно считать ошибкой пользовательского ввода? В zend, yii, simfony все построено на исключениях, даже классы валидаторов. Тут http://wiki.agiledev.ru/doku.php?id=ooad:exception_using говорится, что в java пользовательский ввод обрабатывается исключениями. Так что с вопросом разобрался достаточно хорошо. Чего у меня нет, так это большого опыта их использования. Ну и код... Если вы поняли почему этот код должен возвращать к месту выброса исключения и как должен быть описан класс NotCriticalException Код: php 1. 2. 3. 4. 5. Объясните, пожалуйста. Так же не понимаю, чего ругать вариант: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. По-моему человек ясно показал, что возможность сделать, как я говорил есть, но код будет ужасным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 07:50 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
авторЕсли вы поняли почему этот код должен возвращать к месту выброса исключения да не должен он возвращать к месту... т.к. ты и так находишься в этом месте Код: php 1. 2. 3. 4. 5. 6. 7. авторТак же не понимаю, чего ругать вариант 13578251 + 13578291 за такое, как минимум, лишают премии... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 09:11 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
Shitbox2Читал и достаточно досконально... В zend, yii, simfony все построено на исключениях, даже классы валидаторов... Хм... как-то плохо читал )) валидаторы в yii тебе не выбрасывают исключения, а позволяют узнать об ошибках с помощью методов класса (по крайней мере всегда с ними так работал). "Исключения" так названы потому, что они требуются в исключительных(нестандартных/нештатных) ситуациях, когда последующее выполнение кода может привести к ошибке или само выполнение данного кода при данных обстоятельствах - это уже ошибка. В принципе, в любой ситуации можно и без них обойтись (не помню случая, когда был вынужден их использовать). Как я понимаю, они нужны только для того, что бы программист более высокого уровня (то есть пользующий твои библиотеки) смог узнать причину ошибки в библиотеке, и для того, что бы он эту ошибку не смог проигнорировать (например, ты не смог считать файл из-за того, что его формат не соответствует ожидаемому). В случае с валидаторами, неправильно заполненная форма - это не исключительный случай (вполне нормально например, что я в одной букве в пароле ошибусь). Но при этом является исключительной ситуацией, если у меня в модуле для записи файла на сервер человек должен обладать определёнными правами, а он ими не обладает (то есть программист "провтык", и не проверив права доступа выполняет код записи файла). Вообщем в моём понимании как-то так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 10:33 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
ещё пример... есть модуль управления пользователями. У него в конфигах записаны параметры подключения к базе. Так вот, невозможность соединиться с сервером, отсутствие базы или таблицы в базе - это исключение. Отсутствие пользователя в базе - это нормально (человек пароль неверный ввёл, или просто пользователя такого нету). Тут тоже можно исключение бросить, но зачем? Есть конечно смысл, если библиотека включается единственным инклудом в начале файла, и при какой-либо ошибке (недостатке прав, отсутствии пользователя) останавливает выполнение (что есть логично, так как дальше выполнять ничего не надо, а надо отреагировать на ошибку). Вот тогда бросаем exception, а вот если мы предоставляем интерфейс управления пользователями, то в случае отсутствия пользователя лучше просто вернуть false вместо идентификатора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 10:56 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
ещё раз - на "живом" примере... есть класс file -> в нём есть метод save при сохранении файла (сохраняем на диск ;) в методе save проверяем количесво свободного места на диске и смотрим размер файла, если размер больше свободного места, бросаем exc "нехватает свободного места" - дальше продолжать метод нет смысла - всё равно не сохранится!!! Код: php 1. 2. 3. 4. 5. 6. 7. 8. те кто используют класс , не\обрабатывают исключения Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. фуух... надеюсь понятно объяснил, для чего нужны throw ?! ;) p.s. боюсь тебе рассказывать о существовании блока finnaly ;))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 11:02 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
автордальше продолжать метод нет смысла есть варианты когда дальше подолжать смысл есть. авторжесть! пробросить исключение только для того, что бы самому его и поймать в блоке!!! я за такой подход: функции должны возвращать либо правильный результат, либо исключение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 11:23 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
авторесть варианты когда дальше подолжать смысл есть. ты ошибаешься... авторя за такой подход: функции должны возвращать либо правильный результат, либо исключение. спс КЭП!!! но из твоего кода, этого не видно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 12:02 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
ScareCrowесть варианты когда дальше подолжать смысл есть. раз можно продолжать дальше, значит это чтото некритичное, те мы можем както исправить или обойти эту ситуацию. это уже не исключение а просто ветвление в логике работы. исключения кидают в местах где немогут или недолжны исправлять ситуацию. т.е . обработка будет на другом уровне абстракции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 12:14 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
ScareCrowя за такой подход: функции должны возвращать либо правильный результат, либо исключение. а зачем тогда в самой функции кидать исключение , тутже его ловить и обрабатывать? явно используете их не по назначению ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 12:15 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
ScareCrowавтордальше продолжать метод нет смысла есть варианты когда дальше подолжать смысл есть. авторжесть! пробросить исключение только для того, что бы самому его и поймать в блоке!!! я за такой подход: функции должны возвращать либо правильный результат, либо исключение. очень интересно... разработчики php явно "придерживались" этого мнения, когда писали функции: realpath, intval, iconv, strtotime и т.д. Я бы придерживался структуры (идеи) используемой самими разработчиками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 12:36 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
автор разработчики php явно "придерживались" этого мнения, когда писали функции: realpath, intval, iconv, strtotime и т.д. осталось выяснить в каком году они и зачем они это делали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 13:51 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
ScareCrowавтор разработчики php явно "придерживались" этого мнения, когда писали функции: realpath, intval, iconv, strtotime и т.д. осталось выяснить в каком году они и зачем они это делали. http://php.net/manual/ru/function.strtotime.php Возвращает временную метку в случае успеха, иначе возвращается FALSE. До версии PHP 5.1.0 в случае ошибки эта функция возвращала -1. Ну, в версии 5.1 исключения уже точно были (и по ходу давно уже). Так что даже после организации поддержки исключений разработчики продолжают придерживаться мнения "ошибка не значит исключение". Просто мне очень интересно, как бы выглядел следующий код (представим, что нам надо было отделить числовые значения от строковых), если бы например intval выбрасывала исключение: Код: php 1. уверен, что кто-то щас напишет: Код: php 1. 2. 3. 4. 5. 6. но тогда начинаются танцы с бубном вокруг "а не ошибка ли это из-за того, что $var является объектом?", и мы всёровно попадаем на if(). Вот теперь вопрос, а есть ли смысл? Может всё таки посчитаем разработчиков умными и предусмотрительными? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 14:27 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
теперь начинаем медитировать зачем те же разработчики сделали ErrorException ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 14:32 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
авторчто нам надо было отделить числовые значения от строковых Код: php 1. дальше разговор бессмысленен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 14:34 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
ScareCrowавторчто нам надо было отделить числовые значения от строковых Код: php 1. дальше разговор бессмысленен. варианты...!? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 14:40 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 14:44 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
Hett, Спасибо... забыл о такой :) но смысл то был не в решении задачи, а в представлении кода :) просто не смог придумать нужную задачу, которую нельзя было бы решить иным методом. P.S. ScareCrow, так... к слову, вместо intval могла быть любая другая (например самописная) функция. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 16:45 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
авторда не должен он возвращать к месту... т.к. ты и так находишься в этом месте Код: php 1. 2. 3. 4. 5. 6. 7. Тут try и не нужен Код: php 1. 2. 3. 4. 5. 6. 7. 8. [/quote] А вот тут хорошо бы. ---------------- На счет исключения при загрузке файла. С местом на диске отличный пример! Смотрите, у нас есть три ошибки: закончилось место на сервере, пользователь пытается загрузить файл большего объема, чем можно и файл не того расширения. Считаются ли эти ошибки критическими? Ведь пользователь может их исправить, загрузив меньший файл. С другой стороны, если место на сервере практически закончилось, то это на грани провала, т.к. вскоре никто не сможет загружать. Нужно ли прерывать на таких ошибках скрипт и выдавать их пользователю по-очереди (извините, не то расширение. А сейчас слишком большой) или поступать как с формой и выдавать разом все несоответствия? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 22:12 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
авторНужно ли прерывать на таких ошибках скрипт и выдавать их пользователю по-очереди не любите вы своих пользователй ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 23:32 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
автор Ведь пользователь может их исправить, загрузив меньший файл. пользователь ничего исправить не может - он уже отослал файл, который не влез - код уже отработал и выкинул исключительную ситуацию - всё!!! до следующей отправки файла сервер стоит и молчит!!! авторНужно ли прерывать на таких ошибках скрипт и выдавать их пользователю по-очереди (извините, не то расширение. А сейчас слишком большой) не то расширение или размер превышает установленное ограничение - это не исключительная ситуация - это просто ошибка пользовательского ввода, которая не нуждается в throw!!! они (ошибки) обрабатываются совершенно по другому - http://php.net/manual/en/book.filter.php - например так!!! автор//тут мы это исправляем и должны вернуться обратно в functionWithThrow и продолжить ее выполнение у тебя не всё впорядке с логикой - советую подтянуть этот пробел, только потом можно продолжать конструктивную беседу!!! Успехов! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 23:44 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
авторне любите вы своих пользователйЧего это? Зачем их грузить лишней информацией? автору тебя не всё впорядке с логикой - советую подтянуть этот пробел, только потом можно продолжать конструктивную беседу!!!Что не так? Мы делаем запрос к БД, но там не оказалось нужной информации, поэтому выходим из всех функций и делаем запрос к резервной БД, если там есть то, что нам надо, возвращаемся обратно и дорабатываем часть скрипта. Можно усугубить и предположить, что наш код — это отдельная библиотека и мы не знаем, есть ли резервная БД или другой способ получения недостающих данных, поэтому тут логично выбросить throw, чтобы тот кто использует нашу библиотеку сам решил, что ему делать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2012, 08:57 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=38066304&tid=1464338]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
41ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 305ms |

| 0 / 0 |
