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

> Работа с исключениями и trigger_error
twin  
 ۩  [x] Дата
Цитировать сообщение

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



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

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

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


Цитата (Santehnick @ 30.10.2015 - 06:37)
Удивительный человек. Сам себе что-то придумает и выдает за действительность.

Здрасти, приехали. Вот это не твои слова?
Цитата (Santehnick @ 29.10.2015 - 18:03)
Зачем тебе делать //do something в try блоке? //do something код не относится к исключению, которое мы обрабатываем. Так что

И даже код процитировал:
Свернутый текст
Цитата (Santehnick @ 29.10.2015 - 18:03)
try {
  $var = example(1);
} catch (InvalidParam $e) {
  echo '<br>Реагируем';
}
// do something




// do something





// do something





// do something





// do something





// do something





// do something


Если ловишь иерархию исключений, так нельзя. Да ты и сам понял уже. А если делать catch после всего контекста, то это похоже на GOTO, с чего и начался сыр-бор. Что я напридумывал?

Цитата (Santehnick @ 30.10.2015 - 06:37)
Я просто знаю, что при непойманом исключении будет 500 Internal server error. Пользователь увидит это
Так и у меня увидит, даже при выключенном режиме exception. Но только предварительно слогирует ошибку. Причем обязательно. А отловленные исключения нужно логировать руками.
Цитата (Santehnick @ 30.10.2015 - 06:37)
Верно. Мы почитали логи веб-сервера, разобрались, исправили, написали тест и уверены, что исключение здесь больше не появится.
Какие логи вебсервера? Отловленные ексепшены туда не пишутся, в том и подвох. Ничего ты там не прочитаешь. Только штатные ошибки, а не логические.
Цитата (Santehnick @ 30.10.2015 - 06:37)
Всё что я писал, было лишь попыткой объяснить тебе, что исключения, это просто более мощный, более современный механизм, чем trigger_error. Можешь почитать гугл, php.net и stackowerflow на эту тему. Посмотреть код популярных проектов. Подумать еще раз. И возможно, сделать выводы.

Тоесть в чистом виде это более мощнй функционал, нежели чем выброшенный с помощью trigger_error/ Ты сам себя слышишь?

Калькулятор сам по себе гораздо мощнее, нежели калькулятр, сэмулированный компьютером. biggrin.gif Вот же зациклило то человека.

Ты или не понимаешь, или специально тупишь. В моей схеме ровно те же самые ексепшены, только выбрасываются на trigger_error. Где теряется их мощность?

Только увеличивается засчет возможностей последнего. Которых ексепшены в силу обстоятельств лишены.
Цитата (Santehnick @ 30.10.2015 - 06:47)
Если лень всё читать, то коротко.
trigger_error - древнее говно

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

Вот когда покажешь мнение разработчиков PHP, признание trigger_error ошибочным функцилналом, или если его объявят deprecated, тогда твои слова будут иметь вес. А сейчас это всё брехня и вангование. Куда Вася, туда я.

Я ни разу не слышал из авторитетных источников об этом. Только вот от таких зашоренных аппологетов, как ты.


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

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

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

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

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



орангутанг
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2004
Пользователь №: 36605
На форуме: 3 года, 9 месяцев, 20 дней
Карма: 111




trigger_error какашка

на мой вопрос Расмусу Лендорфу на конференции когда наконец в пхп выпилят этот недофункционал и сделают единой систему обработки ошибок ползала зааплодировало

но так как многое завязано на этом в самом ядре не предвидится выпиливание

вот объясни зачем в движке нужно 2 способа для работы с ошибками и один из них еще и кривейший на столько что нет слов,

пример я делаю fsockopen и сервер не отвечает, что я получу warning и как я его обработаю и зачем мне в исключительной ситуации warning ? я просто оборачиваю try catch finally и работаю как положено, если сервис не отвечает я обработаю и отправлю сообщение об ошибке в виде нормального текста удаленный сервер временно не доступен, это не ошибка 500 или какая либо другая, это просто сервис не доступен

если я оберну warning в exception, я опять ничего дельного не получу так как будет просто обычный exception не информативный

засовывать в собаку ? @ а как я тогда узнаю о других проблемах ?
да после собаки можно проверить if($resource) но это wrongway это не правильно

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




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


Гость пожелал остаться неизвестным

Unregistered









Цитата
И даже код процитировал:

Твой код переписал и процитировал. Это не значит что я пишу везде try catch блоки. Читать научись.

Цитата
Так и у меня увидит, даже при выключенном режиме exception.

При каком выключенном режиме? Нельзя выключить исключения. Их можно только не использовать. user posted image

Цитата
А отловленные исключения нужно логировать руками.

Почему они вообще должны автоматически логгироваться, 2 раз спрашиваю. Если ты поймал исключение и обработал его, почему оно должно автоматически логгироваться? Обработал исключение - это значит, что программа продолжает функционировать дальше. Программа НЕ СЛОМАЛАСЬ, она НЕ РАБОТАЕТ КРИВО, она НЕ РАБОТАЕТ ПЛОХО. Она работает в ШТАТНОМ режиме дальше, она знает, что ей делать, это в catch блоке написано. Программа ОБРАБОТАЛА исключение и работает дальше, ЭТО НЕ ОШИБКА, с какого перепуга пойманое исключение должно АВТОМАТИЧЕСКИ логгироваться. Это не внезапная ошибка в коде, на которую наткнулся интерпретатор, чтобы она автоматически логгировалась, ты понимаешь?

Цитата
Кто-то ляпнул сдуру, давай повторять.

Кто ляпнул? Это я придумал.

Тогда скажи почему в V8 нет trigger_error и прочего хлама, а все работает на исключениях? Или ты кроме PHP ни с чем другим не работал? Еще раз тебе говорю, trigger_error древняя фича и появилась там очень давно, когда еще не было исключений. Если тогда в PHP были бы исключения trigger_error НЕ ПОЯВИЛАСЬ БЫ В PHP НИКОГДА.
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  Дата
Цитировать сообщение

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



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

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

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


Цитата (bestxp @ 30.10.2015 - 08:34)
на мой вопрос Расмусу Лендорфу на конференции когда наконец в пхп выпилят этот недофункционал и сделают единой систему обработки ошибок ползала зааплодировало

Что он ответил? А, понятно. Не предвидится все-таки. Так вот и славно. Я больше скажу. Заапплодировали такие как вы. А вот эти не апплодировали, как пить дать. И это, мне не изменяет зрение? Это правда твоя любимая Symfony? Я насчитал в ней 67 вызовов trigger_error()/ Вот говнокоднры то!

Цитата (bestxp @ 30.10.2015 - 08:34)
вот объясни зачем в движке нужно 2 способа для работы с ошибками и один из них еще и кривейший на столько что нет слов,

Я устал повторять. Я пишу учебный фреймворк. Для начинающих исключения - темный лес и лишняя приблуда. Сразу все не познаешь. А делать фреймворк без исключений - тоже не камильфо. Поэтому компромисс. Кроме того, не все их любят. Я очень много встречал мнений довольно продвинутых программистов, что они только мешают.

Фреймворк должен быть гибким.
Цитата (bestxp @ 30.10.2015 - 08:34)
если я оберну warning в exception, я опять ничего дельного не получу так как будет просто обычный exception не информативный


Явно не читал первый пост. Есть там иерархии. Почему он не информативный то?


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

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

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

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

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



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

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

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


Цитата (Guest @ 30.10.2015 - 08:58)
Если ты поймал исключение и обработал его, почему оно должно автоматически логгироваться?

Ключевое слово ЕСЛИ. На этом и закончим. Ты все равно не понимаешь, зачем это мне. Ты очень узко мыслишь.
Цитата (Guest @ 30.10.2015 - 08:58)
Если тогда в PHP были бы исключения trigger_error НЕ ПОЯВИЛАСЬ БЫ В PHP НИКОГДА.

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


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

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

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

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

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



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

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




Цитата (twin @ 30.10.2015 - 10:32)
Заапплодировали такие как вы. А вот эти не апплодировали, как пить дать.


     * @deprecated since version 2.6, to be removed in 3.0. Use throwAt() instead.


упс...


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

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



орангутанг
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2004
Пользователь №: 36605
На форуме: 3 года, 9 месяцев, 20 дней
Карма: 111




И что ты за пример привел ? ну указывают E_DERPECATED так и что?

Потому что они не строят логики приложения на этих "ошибках" да и ошибки по сути нет, напоминание что это устаревший метод, еще доводы?

Исключение нужно обрабатывать , а не логировать

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

а как ты с trigger error это сделаешь? Костыли через обработчики ошибок ? Уводить логически в дебри? Ну его нафиг , это уже код с запашком исключительного говница)


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

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



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

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

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


waldicom
Ты почему из контекста вырвал? Полный текст приведи:
Цитата
The '.__METHOD__.' method is deprecated since version 2.6 and will be removed in 3.0.

Я умею читать. Не trigger_error deprecated, а сам метод. Почему они ексепшен не кинули? Все просто. Потому что в этом месте не нужно останавливать скрипт. Это предупреждение. И тут использовать exception просто не выйдет. А в лог написать надо, чтобы снять с себя ответственность.

Именно для этого мне триггер и нужен. Чтобы логировать всё, что делает юзер, не мешая ему при этом жить.

А для любителей "новизны" есть режим "exception". Который тоже логируется. tongue.gif


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

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

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

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

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



орангутанг
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2004
Пользователь №: 36605
На форуме: 3 года, 9 месяцев, 20 дней
Карма: 111




Это скорее для тех кто не читает что написано в документации что это Deprecated и я уверен целиком и полностью что такой пользователь и логи не читает если у него ничего не падает, а если упало тогда уже полезет в код и увидет что метода уже нету

а зачеркнутый метод в IDE видно сразу и сразу понятно что deprecated так что по сути это безполезное использование


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

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



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

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

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


Цитата (bestxp @ 30.10.2015 - 10:11)
Потому что они не строят логики приложения на этих "ошибках" да и ошибки по сути нет, напоминание что это устаревший метод, еще доводы?

Вот именно! А ты говоришь устарело. Есть варианты, когда без него никак. Зачем скрипт тормозить на deprecated, если он сейчас работает и может еще сто лет проработать?

Мне это нужно. Я не для вас фреймворк пишу, а для тех, кто только учится использовать ексепшены. И это очень подходящее решение. Компромиссное.


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

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

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

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

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



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

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

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


Цитата (bestxp @ 30.10.2015 - 10:11)
Исключение нужно обрабатывать , а не логировать

Вот я сто раз тоже самое говорил. Только ты акценты переставляешь.

Ошибки нужно логировать и исправлять, а не обрабатывать. Обрабатывать нужно исключение. Нельзя кидать исключения на все ошибки. Симфони в пример.


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

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

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

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

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



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

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

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


Цитата (bestxp @ 30.10.2015 - 10:15)
и я уверен целиком и полностью что такой пользователь и логи не читает если у него ничего не падает, а если упало тогда уже полезет в код и увидет что метода уже нету

Ты мыслишь как пользователь фреймворка. А разработчик должен предугадывать все варианты. Здесь они правы на 100%. Придет новый программер на проект, нафиг ему шарится по докам и файлам. Он лог посмотрит и все поймет.


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

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

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

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

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



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

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




Цитата
Что он ответил? А, понятно. Не предвидится все-таки. Так вот и славно. Я больше скажу. Заапплодировали такие как вы. А вот эти не апплодировали, как пить дать. И это, мне не изменяет зрение? Это правда твоя любимая Symfony? Я насчитал в ней 67 вызовов trigger_error()/ Вот говнокоднры то!


Читаем описание класса
Цитата

/**
* A generic ErrorHandler for the PHP engine.
*
* Provides five bit fields that control how errors are handled:
* - thrownErrors: errors thrown as \ErrorException
* - loggedErrors: logged errors, when not @-silenced
* - scopedErrors: errors thrown or logged with their local context
* - tracedErrors: errors logged with their stack trace, only once for repeated errors
* - screamedErrors: never @-silenced errors
*
* Each error level can be logged by a dedicated PSR-3 logger object.
* Screaming only applies to logging.
* Throwing takes precedence over logging.
* Uncaught exceptions are logged as E_ERROR.
* E_DEPRECATED and E_USER_DEPRECATED levels never throw.
* E_RECOVERABLE_ERROR and E_USER_ERROR levels always throw.
* Non catchable errors that can be detected at shutdown time are logged when the scream bit field allows so.
* As errors have a performance cost, repeated errors are all logged, so that the developer
* can see them and weight them as more important to fix than others of the same level.
*
* @author Nicolas Grekas <p@tchwork.com>
*/


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

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

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



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

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

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


Oyeme
Я надеюсь это ты не мне написал? smile.gif


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

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

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

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

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



146%
******

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




Цитата (twin @ 29.10.2015 - 22:33)
Нет. Оно показывает от того места, где было брошено. А бросается оно всегда в одном месте. А значит место ошибки не видно. В месте ошибки стоит trigger_error, а не throw по моей схеме.

Сегодня попробовал что то накодить, делаю throw new \Exception('Тестовая ошибка'); или trigger_error('Тестовая ошибка');
Получаю путь к файлу и строку с ошибкой. Всё там видно вроде.

user posted image


--------------------
:)
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

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