@zlodiak

Обязательно ли использовать кастомные классы исключений?

Скажите пожалуйста, в моём коде обязательно ли использовать свои классы исключения? Вообще, это хорошая практика - создавать классы исключений и отлавливать конкретно их, а не просто безликие Exception. Но у меня сомнения по-поводу того, что в нижеприведённом коде особенной пользы от них не будет, а вот сложность и читаемость кода пострадают значительно

class Main:
    def __init__(self, config, credentials, Parser, DB_connection, Sql_requester):
        self.config = config
        self.parser = Parser(self.config)
        self.db_connection = DB_connection(credentials)
        self.sql_requester = Sql_requester
        self.content = []

        try:
            self.get_content()
            self.save_content()
        except Exception as e:
            # write to logger
            print('stop program::', e)

    def get_content(self):
        self.content = self.parser.get_content()

    def save_content(self):
        with self.db_connection as db_connection:
            # some code

if __name__ == '__main__': 
    Main(config, credentials, Parser, DB_connection, Sql_requester)


class Parser:
    def get_content(self):
        try:
            root_html = self.get_html(self.config.url)
            links = self.get_links(root_html)
            content = self.get_content_inner(links)
            return content
        except Exception as e:
            # write to logger
            raise Exception('geting content for parse is failed ')

    def get_html(self, url):
        try:
            # some code
        except Exception as e:
            # write to logger
            raise Exception('getting html of ' + url + ' is failed',)

    def get_links(self, html):
        try:
            # some code
        except:
            # write to logger
            raise Exception('getting links to inner pages is failed')

    def get_content_inner(self, links):
        try:
            # some code
        except:
            # write to logger
            raise Exception('parse of inner page is failed')

        try:
            # some code
        except:
            # write to logger
            raise Exception('formating data of inner page is failed')


В приведённом коде я постарался выбросить все отвлекающие подробности. таким образом получился псевдокод. Но если кому интересно, то полный код здесь
  • Вопрос задан
  • 194 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Хорошая практика - отлавливать максимально конкретные исключения, а не Exception. И отсюда же следует, что использовать собственные классы исключений - это тоже хорошо.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
17 апр. 2024, в 00:48
35000 руб./за проект
17 апр. 2024, в 00:13
800 руб./за проект
17 апр. 2024, в 00:06
240000 руб./за проект