Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (6) « Первая ... 2 3 [4] 5 6  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> 8-CMS, CMS в 8 строчек кода
waldicom  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 6204
Пользователь №: 5552
На форуме: 8 лет, 4 месяца, 25 дней
Карма: 162




Цитата (twin @ 28.10.2015 - 14:21)
Если я в конфиге прописал неверные данные коннекта, на кой ляд мне исключение? Это фатал в чистом виде.

Тот факт, что при неудачном коннекте к БД юзер уже не сможет ничего сделать, тебя не особо волнует?
Не надо забывать, что ты пишешь фреймворк, а не страничку своему работодателю, с которой только ты один работаешь.
Твой фреймворк будут использовать миллионы, подумай о них, а не о себе.


--------------------
Свои мозги еще никто не отменял.
Телепатов нету.
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 1 месяц, 29 дней
Карма: 299

Трезвый :
5 лет, 11 месяцев, 9 дней


Цитата (waldicom @ 28.10.2015 - 13:41)

Тот факт, что при неудачном коннекте к БД юзер уже не сможет ничего сделать, тебя не особо волнует?
Нет, не волнует. Меня больше волнует, что он все-таки сможет что-то сделать. И это "что-то" может принести плачевный результат.

Допустим пользователь не отловил какое то исключение. Что мы видим на экране?
Цитата
Fatal error: Uncaught exception
А дальше самое интересное - вся структура с путями и названиями. Кому это полезно, посетителю? Его это только напугает. И это удар поддых фреймворку. Потому что скажут потом, что ваш фреймворк нифига не работает, сыпет ошибки. Хотя ошибки эти пользователя, а не фреймворка.

И как тут быть?



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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 1 месяц, 29 дней
Карма: 299

Трезвый :
5 лет, 11 месяцев, 9 дней


В моем случае есть три варианта настроек.

1. Режим дебаггинга. Все trigger_error преобразуются в исключения.
2. Режим 500. На экране ошибка сервера, она логируется, скрипт останавливается.
3. Для продвинутых - отключение trigger_error. При этом можно пользоваться собственными эксепшенами, но ошибки все равно будут слогированы.

В вашем случае - только один. Ловить исключения и бороться с ними.

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

Да что там новичек. И на старуху бывает проруха. Чем же все же круче внутренние эксепшены, объясните без эмоций. Я пока вижу только минусы.


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
waldicom  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 6204
Пользователь №: 5552
На форуме: 8 лет, 4 месяца, 25 дней
Карма: 162




Цитата (twin @ 28.10.2015 - 14:50)
Нет, не волнует. Меня больше волнует, что он все-таки сможет что-то сделать. И это "что-то" может принести плачевный результат.

повторюсь:

Цитата
Не надо забывать, что ты пишешь фреймворк, а не страничку своему работодателю, с которой только ты один работаешь.
Твой фреймворк будут использовать миллионы, подумай о них, а не о себе.


--------------------
Свои мозги еще никто не отменял.
Телепатов нету.
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 1 месяц, 29 дней
Карма: 299

Трезвый :
5 лет, 11 месяцев, 9 дней


Я о них и думаю как раз. На мой взгляд свобода выбора гораздо лучше рамок. В моем случае эксепшены не возбраняются. Только на стороне пользователя. Вы же эти миллионы загоняете в угол, не давая возможности выбора. С внутренними эксепшенами такой как у меня финт сделать гораздо сложнее. Я пытаюсь конечно, раз нужно соответствовать. Только вот не пойму, ради чего?


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 1 месяц, 29 дней
Карма: 299

Трезвый :
5 лет, 11 месяцев, 9 дней


Цитата (Oyeme @ 28.10.2015 - 12:45)
Попадает под Ваше описание.

Угу. Мирового порядка захотелось. Был один с усиками, который пытался его установить biggrin.gif

Вот пожалуйста, столкнулся с проблемой этого вашего порядка. Делаю сейчас дебаггер SQL. С mysqli проблем особых не возникло. С PDO тоже по образу и подобию. Все работает на ура (внизу картинка).

Живи и радуйся вроде. Но тут вдруг откуда не возмись ваш порядок. Разрабы PDO обо мне "позаботились". Исключение кинули. Я теперь могу вывести на экран только заведомо правильный запрос, без ошибок синтаксиса. В противном случае медвежья услуга - исключение. А на кой мне в дебаггере правильный запрос? Вся фишка в том, чтобы посмотреть на ошибочный.

Вот как мне быть? Класс отнаследован от PDO. Отловить в потомке я его не могу, оно выше бросается, в родителе. Вокруг вызова тоже не могу, ибо вызов на стороне пользователя, а ошибка мне нужна в дебаггере. И что? Полезно это мне?

Эксепшен - чисто пользовательская фишка. Когда его бросает система, один только вред. sad.gif
Зато порядок, все строем ходим.

Присоединённое изображение
Присоединённое изображение


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Oyeme  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Reality is wrong. Dreams are for real
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1672
Пользователь №: 16955
На форуме: 7 лет, 9 месяцев, 6 дней
Карма: 94




Twin, Вот простой ajax запрос на получение данных и запрос отвалился с ошибкой. Как будете отлавливать? Используя trigger error? Что получит в этом случае json?
И по Вашему вопросу, сначало определитесь с уровнями исключений и ловите их на каждых уровнях по своему.

У меня все exceptions логируются и мне приходит сразу же смс если скажем что-то с критическое если просто warning то просто мэйл . Это стандартная практика записывать логи.

Соответственно с фаталами вы уже работает на самом высоком уровне и там тоже прикручен логгер.

Вот Вы написали скажем какой-то сервис или библиотеку и мне нужно её использовать и тут Ваша библиотека получает объект вместо строки и библиотека Вываливается с ошибкой.
У меня же прикручена логика если не работает ваш сервис то использовать другой.
Это стандартная практика когда какой-то сервис не работает а нужно использовать другой(может timeout)

В вашем же случаи я сломаю свою систему вашем trigger error который выдаст мне белый экран.

Надеюсь вам теперь понятно почему triggers errors ужасный говно код на высоких очень уровнях.
Что является вообще типичным быдлом кодом


--------------------
Programming: Private lessons via skype £45/h

Частные уроки в Лондоне / удаленно по skype.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11782
Пользователь №: 23195
На форуме: 6 лет, 4 месяца, 9 дней
Карма: 428

Трезвый :
7 лет, 3 месяца, 9 дней


Помню как-то раз пришлось парсить текст нативного php-шного warning'а дабы понять, что конкретно произошло, и в определенном случае переключиться на альтернативный сценарий. Очень "рад" был такому положению дел.
Жаль сейчас не могу найти сей эпичный костыль.


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
[x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 1 месяц, 29 дней
Карма: 299

Трезвый :
5 лет, 11 месяцев, 9 дней


Цитата (Oyeme @ 28.10.2015 - 17:00)
Twin, Вот простой ajax запрос на получение данных и запрос отвалился с ошибкой. Как будете отлавливать? Используя trigger error? Что получит в этом случае json? 

Почему этим должен заниматься фреймворк, я не пойму. Это пользователя забота, реагировать на ошибки. Фреймворк должен вернуть либо json, либо false. Если неудача, пользователь пусть бросает сколько угодно исключений. И строит свои иерархии. Его право. В случае с trigger_error это не помеха вовсе.
Цитата (Oyeme @ 28.10.2015 - 17:00)
И по Вашему вопросу, сначало определитесь с уровнями исключений и ловите их на каждых уровнях по своему

Вопрос не в том, как ловить. Вопрос где. Но я решил уже эту проблему. Костыльно наверное, но решил.
Цитата (Oyeme @ 28.10.2015 - 17:00)
В вашем же случаи я сломаю свою систему вашем trigger error который выдаст мне белый экран.

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

Ты внимательно смотрел код, я два раза уже повторил его. В третий раз повторю, мне не лень:
    public function strtolowerUTF8($var = null)
{
if (!is_string($var)) {
@trigger_error('это не строка');
return false;
}

return mb_strtolower($var, 'utf-8');
}

Обрати внимание на собачку. Да, это тоже нарушение ваших правил, но зато сколько профита в этом. Кастомный хэндлер их ловит. Лог работает. На экран ничего не лезет. Скрипт выдает логические результаты, которые в сто раз легче обрабатывать, нежели исключения. Есть выбор режимов. Можно превратить их в исключения (правда без иерархий), можно отреагировать 500, можно вообще ничего не делать, и работать с эксепшенами или простой логикой на клиентской стороне.

Если дальше развивать тему, можно в обработчик передавать свои коды, и на их основе создать иерархию исключений. Тогда вообще будут все довольны. Как передать локацию, я уже показывал.

А что у вас?

Цитата (Oyeme @ 28.10.2015 - 17:00)
Надеюсь вам теперь понятно почему triggers errors ужасный говно код на высоких очень уровнях.
Нет. Ничего не понятно. Давай еще раз.

Имеем фреймворк. Он бросает исключения. Пользователь их должен ловить.

1. Если пользователь отловит не все исключения, что будет?
2. Ecли пользователь не реализует логер, что будет?
3. Если пользователь захочет сделать свою иерархию, как?
4. Как реализовать обычную логику, основываясь на try... catch? А чего не на GOTO сразу? С ним проще как раз, там хоть локация указывается, куда смотреть.

Единственны аргумент я пока слышу, это то, что я делаю не как все. А это очень слабый аргумент. Стремящийся к нулю.

Цитата (Invis1ble @ 28.10.2015 - 17:20)
Помню как-то раз пришлось парсить текст нативного php-шного warning'а дабы понять, что конкретно произошло, и в определенном случае переключиться на альтернативный сценарий. Очень "рад" был такому положению дел.
Жаль сейчас не могу найти сей эпичный костыль.

Очень жаль, что не можешь))) Только это не PHP виноват, а твой скрипт, раз тебе пришлось парсить нативный варнинг. Не так много там вариантов, чтобы не сделать цепочку проверок.


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11782
Пользователь №: 23195
На форуме: 6 лет, 4 месяца, 9 дней
Карма: 428

Трезвый :
7 лет, 3 месяца, 9 дней


Цитата
Только это не PHP виноват, а твой скрипт, раз тебе пришлось парсить нативный варнинг. Не так много там вариантов, чтобы не сделать цепочку проверок.

да да, "Шоколад PHP ни в чём виноват..."


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Santehnick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Абориген
*****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 231
Пользователь №: 26735
На форуме: 5 лет, 8 месяцев, 25 дней
Карма: 15




Цитата (twin @ 28.10.2015 - 13:50)
Допустим пользователь не отловил какое то исключение. Что мы видим на экране?
Цитата
Fatal error: Uncaught exception
А дальше самое интересное - вся структура с путями и названиями. Кому это полезно, посетителю? Его это только напугает. И это удар поддых фреймворку. Потому что скажут потом, что ваш фреймворк нифига не работает, сыпет ошибки. Хотя ошибки эти пользователя, а не фреймворка.

И как тут быть?

Два режима работы debug и prodaction. Обработчик исключений внутри фреймворка определяет в каком мы режиме работы и в зависимости от этого принимает решение:

1. debug режим - Fatal error: Uncaught exception с подробным стектрейсом
2. prodaction режим - ответ с кодом 500 server error.

Выбрасывание исключений это просто более продвинутый вариант trigger_error. Если сработал trigger_error, вы можете показать 500 server error. Если сработал throw вы тоже можете показать 500 server error. Но если при trigger_error выбора у нас нет (программа завершает работу), то при throw это исключение можно обработать и продолжить выполнение программы, а можно не обрабатывать и получить 500 server error, точно также как и при trigger_error.
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 1 месяц, 29 дней
Карма: 299

Трезвый :
5 лет, 11 месяцев, 9 дней


Santehnick
Цитата (Santehnick @ 29.10.2015 - 11:35)
2. prodaction режим - ответ с кодом 500 server error.

Не понял. Мне тут говорят, что ексепшены нужны не только для дебаггинга, но и для "обработки ошибок". Мол клиент должен решать, как реагировать на исключения. А если режим 500, то как тогда строить логику в зависимости от иерархии?


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Santehnick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Абориген
*****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 231
Пользователь №: 26735
На форуме: 5 лет, 8 месяцев, 25 дней
Карма: 15




Цитата (twin @ 29.10.2015 - 11:51)
Santehnick
Цитата (Santehnick @ 29.10.2015 - 11:35)
2. prodaction режим - ответ с кодом 500 server error.

Не понял. Мне тут говорят, что ексепшены нужны не только для дебаггинга, но и для "обработки ошибок". Мол клиент должен решать, как реагировать на исключения. А если режим 500, то как тогда строить логику в зависимости от иерархии?

Да. Разработчик может решать как реагировать на ошибки, а может не решать и никак не реагировать на ошибки, тогда пользователь должен видеть 500 server error в prod режиме и подробный стектрейс ошибки в debug режиме, вот и всё. Тоже самое как и при trigger_error, только вы еще даете возможность обработать ошибку. Но обрабатывать ошибки вовсе необязательно, тогда программа просто завершит работу точно также как и при trigger_error.

Под ошибкой подразумевается кинутое исключение.
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 1 месяц, 29 дней
Карма: 299

Трезвый :
5 лет, 11 месяцев, 9 дней


Нет, постойте. Так нельзя. Если логика приложения строится на ексепшенах, ни о каком режиме 500 не может быть и речи. Нужно ловить все исключения. А вопрос как раз так и стоял:
Цитата (twin @ 28.10.2015 - 17:42)
1. Если пользователь отловит не все исключения, что будет?



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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Santehnick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Абориген
*****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 231
Пользователь №: 26735
На форуме: 5 лет, 8 месяцев, 25 дней
Карма: 15




Цитата
Если пользователь отловит не все исключения, что будет?


Будет 500 server error в prodaction режиме (потому что пользователю не нужно показывать стектрейс, где может присутствовать чувствительная информация, например пути до файлов).

Будет обычный Fatal error: uncaught exception в debug режиме, чтобы разработчик мог как-то отреагировать на это исключение. Либо как-то его обработать, либо переписать код так, чтобы это исключение больше не выбрасывалось.
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (6) « Первая ... 2 3 [4] 5 6  Ответ в темуСоздание новой темыСоздание опроса