Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / api, обработка ошибок / 8 сообщений из 8, страница 1 из 1
04.08.2013, 20:38
    #38354496
варенье
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
api, обработка ошибок
Разрабатываю api для сайта, параллельно пишу клиента для этого api. Пытаюсь решить вопрос как лучше сделать обработку ошибок, видел, что часто активно используется обработка исключений, но мне в этом способе не нравится необходимость каждый запрос оборачивать двойными, а то и тройными catch.

Я склоняюсь к такой схеме: запрос к api возвращает только данные(результат запроса) или false (false обозначает только ошибку, а пустой результат - это пустой массив), все исключения отлавливаются библиотекой, но при необходимости пользователь может получить ошибку(если она была) опросив переменную класса, т.е. как-то так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
if (false === ($r = $api->call('user.get'))) { // empty result of user.get is an empty array, so FALSE means an error
    switch ($api->getError()->getCode()){
        case 'CODE_1':
        break;
        .............
    }
    
    return false;
}

// obtained data proccessing here


Понятно, что такой код обработки не лучше чем каждый раз обертывать в catch, но не всегда надо обрабатывать ошибку, иногда можно просто пропустить обработку, если данные не были получены.

Как думаете, как лучше сделать?
...
Рейтинг: 0 / 0
04.08.2013, 21:29
    #38354524
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
api, обработка ошибок
варенье,

сам систему исключений очень редко использую (в принципе несколько раз только было), но это чисто по привычке :). Вообще говорят исключения очень удобны, так как прокидываются сразу через несколько уровней. Скажем есть у Вас функция подключения к чему-то, функция логина и функция получения данных. Вы это всё для удобства оборачиваете ещё в один метод. Если делать как Вы хотите, придётся кучу if...else городить. А если Вы в случае ошибок в данных трёх функциях выкидываете исключения, то и следить далее за ошибками в этих функциях не приходится, так как если одна из них выкинет исключение, то пользователь Вашего api получит данные об ошибке напрямую.

Как-то так.
...
Рейтинг: 0 / 0
05.08.2013, 06:18
    #38354659
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
api, обработка ошибок
все функции должны возвращать либо результат либо исключение
...
Рейтинг: 0 / 0
06.08.2013, 13:42
    #38356547
Electric200
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
api, обработка ошибок
Вот это и не нравится в PHP. Что для того что бы типизировать работу приложения необходимо городить велосипед.
...
Рейтинг: 0 / 0
06.08.2013, 13:52
    #38356562
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
api, обработка ошибок
Electric200Вот это и не нравится в PHP. Что для того что бы типизировать работу приложения необходимо городить велосипед.

не понял. о каком велосипеде речь то?
...
Рейтинг: 0 / 0
06.08.2013, 13:55
    #38356573
Electric200
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
api, обработка ошибок
О том, что можно написать черт знает что в качестве аргументов, и получить черт знает что на выходе. И тебе за это нечего не будет.
...
Рейтинг: 0 / 0
06.08.2013, 14:17
    #38356628
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
api, обработка ошибок
Electric200О том, что можно написать черт знает что в качестве аргументов, и получить черт знает что на выходе. И тебе за это нечего не будет.
вообще, так можно сказать о любом не типизированном языке :)

Но можно ведь указывать класс, требуемый на вход. Поддерживаются классы и массивы (пока примитивы не поддерживаются), но в 5.6 хотели дать такую возможность. Так что пхп делает шаг к жёсткой типизации.
...
Рейтинг: 0 / 0
06.08.2013, 16:03
    #38356897
Electric200
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
api, обработка ошибок
Согласен. Если пишешь сам.. но PHP это C. Где проэкты работают годами, и в них никто не лезет. Тут все иначе.. И часто работаешь с чужим кодом. Ну это у всех думаю такое.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / api, обработка ошибок / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]