LINUX.ORG.RU

История изменений

Исправление quiet_readonly, (текущая версия) :

Ещё раз повторяю, тот кусок кода - прототип, что бы показать концепцию.

По-моему тот кусок был просто попыткой давления на неопытного оппонента :D

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

Однако, нет. Код обработки исключений придётся писать в каждом месте, откуда управляется вызов некоторой потенциально опасной операции. Исключение при загрузке doc-файла должно привести к диалогу с ошибкой и продолжению работы в штатном режиме, при ошибке в загрузке текстуры надо заменить её какой-то яркой заглушкой, если ошибка при загрузке модели - она заменяется другой яркой заглушкой, и так далее.

Ещё печали добавляют библиотеки типа libmysqlcppconn, в которой каждый метод API может бросить одно из двух исключений, причём о существовании второго мы с напарником узнали через месяц. Такие библиотеки поневоле плодят

быдлокод, падающий при отсутсвии сети или от любой другой нештатной ситуации.

Ексепшины необходимы в случае фейла в констукторе.

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

Исходная версия quiet_readonly, :

Ещё раз повторяю, тот кусок кода - прототип, что бы показать концепцию.

По-моему тот кусок был просто попыткой давления на неопытного оппонента :D

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

Однако, нет. Код обработки исключений придётся писать в каждом месте, откуда управляется вызыв некоторой потенциально опасной операции. Исключение при загрузке doc-файла должно привести к диалогу с ошибкой и продолжению работы в штатном режиме, при ошибке в загрузке текстуры надо заменить её какой-то яркой заглушкой, если ошибка при загрузке модели - она заменяется другой яркой заглушкой, и так далее.

Ещё печали добавляют библиотеки типа libmysqlcppconn, в которой каждый метод API может бросить одно из двух исключений, причём о существовании второго мы с напарником узнали через месяц. Такие библиотеки поневоле плодят

быдлокод, падающий при отсутсвии сети или от любой другой нештатной ситуации.

Ексепшины необходимы в случае фейла в констукторе.

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