![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Ripper |
|
|||
![]() Lonely soul... ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 30.6.2004 Где: г. Москва Репутация: 1 Всего: 23 |
Добрый день.
Насколько я понял, есть 2 метода обработки ошибок - исключения и возвращаемые значения. Исключения на php я никогда не использовал, так сложилось. Более привычно вернуть из функции true/false. Только вопрос в том, что, когда нужно разделять несколько видов ошибок, какого типа данные вы возвращаете из ф-ии? цифру (1 - запись прошла успешна, 2 - не найден id, 3 - ..), строку ("success", "id_not_found") или может массив ('status'=>'error', 'errorType'=>...)? Как правильно действовать в этой ситуации?) Спасибо -------------------- "Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 26 Всего: 101 |
всё зависит от ситуации. где-то вообще достаточно вернуть false, где-то нужна подробная информация. возвращать строки имхо странно.
тогда и начинаешь понимать зачем исключения ... информация об ошибке нужна что бы 1. проанализировать и принять решение в программе 2. выдать соответствующее сообщение сложившаяся разумная практика (не только в php, вообще) - иметь числовые коды ошибок и строковые сообщения. дабы сделать обработку кода ошибки понятней, можно определить константы, имеющие осмысленные имена
|
|||
|
||||
| Ripper |
|
|||
![]() Lonely soul... ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 30.6.2004 Где: г. Москва Репутация: 1 Всего: 23 |
Опишу ситуацию по-подробнее.
Я использую сейчас CodeIgniter. У меня есть на сайте кнопка, которая устанавлиавает значение для сущности в БД. Ну скажем, наценка на товар. Делается это через аякс. Клиент отправляет запрос, получает ответ и в зависимости от ответа что-то выводит, типа "Наценка успешно изменена", или "Произошла ошибка". Но существует например еще такая ошибка - наценку нельзя изменить если не установлена базовая стоимость. И еще ошибка - не найдена запись в БД по такому то id. Соотвественно есть класс модели с ф-ией изменения наценки, есть контроллер котороый вызывает ф-ию в модели и парсит результат. А дальше уже отдает юзеру в нужном ему формате окончательный результат. Я понимаю что строки возвращать как -то странно, хотя вроде очень удобно ? (return "id_not_found" и вроде все, можно проверять в контроллере) т.е. мне нужно в конфиге описать общие defin-ы для всех ошибок, далее возвращать из ф-ии этот дефайн , а в контроллере свитчить результат по дефайнам? Вообще странно, зачем тогда нужны значения дефайнам в принципе. Я же их все равно никогда не использую Похоже пора почитать про исключения) -------------------- "Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом |
|||
|
||||
| Ripper |
|
|||
![]() Lonely soul... ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 30.6.2004 Где: г. Москва Репутация: 1 Всего: 23 |
http://blog.voltampmedia.com/2011/12/08/ph...nd-codeigniter/ собственно вот моя ситуация
но если я верно понял, то ошибка типа "запись не найдена" это не исключение, а просто один из возможных результатов, и для этого исключения применять не надо -------------------- "Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом |
|||
|
||||
| baldina |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 26 Всего: 101 |
возможно, в данном случае и без исключений все красиво.
да, так. а насчет "никогда не использую" не согласен: они используются в момент выставления ошибки:
с исключениями было бы покороче
Это сообщение отредактировал(а) baldina - 12.9.2012, 16:43 |
||||
|
|||||
| Ripper |
|
||||||
![]() Lonely soul... ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 30.6.2004 Где: г. Москва Репутация: 1 Всего: 23 |
А еще вопрос, вот как сделано сейчас: я возвращаю клиенту строку типа {status:error, errorType: record_not_found}, а он в js коде уже выводит на русском сообщение. Если я правильно понял такая практика не правильная, и нужно отправлять сообщение с сервера?
Дело в том что мне нужна будет языковая поддержка. в CI вместо дефайнов я могу использовать языковые переменные, там есть специальный файлик в котором содержатся строки типа:
Соотвественно я решил сделать так:
это английский перевод, для русского точно такой же файлик уже с русским переводом В контроллере:
Все вроде хорошо. Единственное что - верно ли отправлять с сервера строку с ошибкой, или её нужно формировать в js? (Что, впрочем, я не знаю как делать совершенно) -------------------- "Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом |
||||||
|
|||||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 26 Всего: 101 |
||||
|
||||
![]()
|
| Правила форума "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. |