![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 3 Всего: 55 |
Вот в PHP5 появилась возможность "ловить"
В принципе для обработки ошибок можно сделать так:
Что вы считаете по поводу такого подхода к ошибкам? Это сообщение отредактировал(а) Opr - 18.5.2005, 10:17 |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 8 Всего: 261 |
Подход классный, но смысл его применять есть только там, где подобгная конструкия будет работать вместо многих IF'ов...
В приципе в try ... catch идеально пихать работу модуля или транзакции SQL запросов... |
|||
|
||||
| simanyay |
|
|||
![]() Антон Ковалёв ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2053 Регистрация: 22.8.2002 Репутация: нет Всего: 36 |
Весьма упрощает код, делает его безопасней и стабильней. -------------------- «It's better to be a pirate than to join the Navy» — Steve Jobs. |
|||
|
||||
| <Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 2 Всего: 64 |
Кроме того позволяет централизованно обрабатывать все возможные ошибки, уменьшает обьем всего кода(а для интрепретатора это весьма важно
И по поводу кода - не совсем правильно было бы каждый раз в скриптах делать анализ данных и писать throw. Для этого нужно либо написать обертки нужных функций(возможно, даже используя классы). Возможно, в следующих версиях PHP это будет учтено Т.е., ИМХО, все должно выглядеть примерно так(код, разумеется упрощен для показания сути идеи
Это сообщение отредактировал(а) <Spawn> - 23.5.2005, 05:24 -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
| Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 3 Всего: 55 |
<Spawn>
да, толковое замечание, спасибо, постараюсь учесть. |
|||
|
||||
| Ciber SLasH |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1813 Регистрация: 9.11.2004 Где: С.-Петербург Репутация: нет Всего: 67 |
Не мойму, почему функция:
выдаёт всегда true, даже если файл не существует ? По идеи при первой ошибке должны попасть в блок catch. Да и вообще походу в блок catch функция не когда не попадает, что-то не работает этот Exception... |
|||
|
||||
| AntonioBanderaz |
|
||||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 1 Всего: 18 |
А вообще правильнее будет делать как показал <Spawn> Тоесть обернуть запись в файл
в отдельный класс или функцию, а дальше уже в ней выкидывать исключения.... -------------------- ГЫ... |
||||
|
|||||
| Ciber SLasH |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1813 Регистрация: 9.11.2004 Где: С.-Петербург Репутация: нет Всего: 67 |
А где же тогда преимущества блока try {} catch {} ? Ведь даже в JavaScript и то не нужно никаких условий в блоке try {} catch {}. При любой ошибке интерпретатор автоматом должен переходить в блок catch {}. По сути твой вариант — этот та же проверка if-ами. |
|||
|
||||
| AntonioBanderaz |
|
|||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 1 Всего: 18 |
-------------------- ГЫ... |
|||
|
||||
| Ciber SLasH |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1813 Регистрация: 9.11.2004 Где: С.-Петербург Репутация: нет Всего: 67 |
Не намного таким макаром уменьшается размер кода.
По сути: здесь ветка else { exit('Error'); } при проверке if-ами, заменяется на throw ('Error'); Вот пример того, как должен "по-человечески" работать этот механизм:
|
|||
|
||||
| AntonioBanderaz |
|
|||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 1 Всего: 18 |
Как он должен работать, я знаю... не только с PHP знаком... Добавлено @ 19:28 посути там ещё и finally должён присутствовать.... -------------------- ГЫ... |
|||
|
||||
| sammix |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 1.10.2005 Репутация: 1 Всего: 2 |
try catch по скорости не очень. Если очень нужно быстродействие, то этим способом лучше не пользоваться, а обойтись if else.
|
|||
|
||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 1 Всего: 73 |
sammix, основания для данного заявления есть? Неужели пару операторов try...catch медленее чем несколько десятков if...else?
-------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| -=Ustas=- |
|
|||
![]() Ustix IT Group ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: нет Всего: 69 |
В верхних постах обсуждался метод function includeex($mod). Так у меня вот такой вопрос... Если инклюдить какой-нить модуль через метод объекта или просто через функцию, то все переменные, находяшиеся в головном файле (который инклюдит) становятся невидны в инклюженном файле, ну это и понятно, в принципе.... Это как-то решается?
-------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 1 Всего: 73 |
-=Ustas=-, у меня все модули это классы. Если хочешь подключать просто код, ставь в начале global $var_name.
ПС При чем тут try catch? -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Для профи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |