@Hint

Стоит ли передавать в исключения дополнительную информацию?

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

Например, класс для работы с БД (ORM, конструктор запросов). При выполнении запроса база возвращает ошибку (unknown column), класс генерирует исключение. Хорошо бы иметь возможность в обработчике исключения получить текст запроса (отдельно от текста ошибки). И как это сделать? Удобнее всего расширить исключение, добавив отдельный метод, но является ли этом верным подходом? Можно сохранять последний запрос в объекте для работы с БД, а потом при необходимости читать его оттуда (getLastQuery), но в этом случае функции будут иметь побочный эффект, что тоже как-то не очень хорошо. Это только пример.
Класс исключения из какой-то библиотеки: https://github.com/vasa-c/go-db/blob/master/goDB/E...

Наследование исключений по-хорошему используется только для создания иерархий исключений, а не для внедрения дополнительной функциональности?

Сначала пошел искать встроенные классы исключений в популярных фреймворках с расширенным конструктором, но потом решил спросить здесь.
  • Вопрос задан
  • 114 просмотров
Пригласить эксперта
Ответы на вопрос 1
@smple
не проще ли в тексте исключения указывать `Name` is unknown column (вместо Name указывать имя колонки что не нашлось)
Получается в классе где создается исключение определяется неверная колонка и текст сообщения говорит что в таком то месте обращение идет к такой то колонке, которой нет в бд, текст всего запроса видеть не надо.

можно поступить еще проще и писать что не могу выполнить запрос в бд и писать текст запроса, но имхо его потом разбирать и тд за пределами объекта работы бд.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы