Обработка исключений при вызове внешнего API - PullRequest
0 голосов
/ 12 ноября 2018

Я звоню Udemy external api, чтобы создать простой сервис REST для экспериментальных целей.

https://www.udemy.com/developers/affiliate/

Вот мой метод обучения get_all ().

class Courses(object):
    """
    Handles all requests related to courses.
    ie; gets the courses-list, courses-detail, coursesreviews-list
    """

    def __init__(self, api):
        self.api = api
        logger.debug("courses initialized")

    def get_all(self):
        page = 1
        per_page = 20

        while True:
            res = self._get_courses(page, per_page)
            if not res['results']:
                break

            try:
                for one in res['results']:
                    yield one
            except Exception as e: -->>>handling exception
                print(e)
            break

        page += 1

    def _get_courses_detail(self, page, per_page):
        resource = "courses"
        params = {'page': page, 'per_page': per_page,
#                   'fields[course]': '@all'
                  }

        res = self.api.get(resource, params)
        return res

Теперь, разумно ли обрабатывать исключение (в методе get_all ()), предполагая, что в возвращаемых данных API может быть какая-то ошибка?

Или обработка исключения (в get_all) не требуетсяздесь, и это должно быть обработано вызывающей функцией?

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

1 Ответ

0 голосов
/ 12 ноября 2018

Я разделяю мнение в этом ответе . Поэтому поймайте исключение как можно скорее и, если необходимо, сбросьте его на следующий уровень.

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

Поймать → Ретроу

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

Поймать → Ручка

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

Catch → Ошибка возврата

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...