powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / api, обработка ошибок
8 сообщений из 8, страница 1 из 1
api, обработка ошибок
    #38354496
варенье
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разрабатываю 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
api, обработка ошибок
    #38354524
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
варенье,

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

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

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

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


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