История изменений
Исправление quiet_readonly, (текущая версия) :
Ещё раз повторяю, тот кусок кода - прототип, что бы показать концепцию.
По-моему тот кусок был просто попыткой давления на неопытного оппонента :D
Если же проект довольно большой, то написать обработку ексепшинов достаточно один раз в одном месте.
Однако, нет. Код обработки исключений придётся писать в каждом месте, откуда управляется вызов некоторой потенциально опасной операции. Исключение при загрузке doc-файла должно привести к диалогу с ошибкой и продолжению работы в штатном режиме, при ошибке в загрузке текстуры надо заменить её какой-то яркой заглушкой, если ошибка при загрузке модели - она заменяется другой яркой заглушкой, и так далее.
Ещё печали добавляют библиотеки типа libmysqlcppconn, в которой каждый метод API может бросить одно из двух исключений, причём о существовании второго мы с напарником узнали через месяц. Такие библиотеки поневоле плодят
быдлокод, падающий при отсутсвии сети или от любой другой нештатной ситуации.
Ексепшины необходимы в случае фейла в констукторе.
Однако, редко возникает необходимость делать операции с возможностью фейла в конструкторе, ну если не считать выделения памяти.
Исходная версия quiet_readonly, :
Ещё раз повторяю, тот кусок кода - прототип, что бы показать концепцию.
По-моему тот кусок был просто попыткой давления на неопытного оппонента :D
Если же проект довольно большой, то написать обработку ексепшинов достаточно один раз в одном месте.
Однако, нет. Код обработки исключений придётся писать в каждом месте, откуда управляется вызыв некоторой потенциально опасной операции. Исключение при загрузке doc-файла должно привести к диалогу с ошибкой и продолжению работы в штатном режиме, при ошибке в загрузке текстуры надо заменить её какой-то яркой заглушкой, если ошибка при загрузке модели - она заменяется другой яркой заглушкой, и так далее.
Ещё печали добавляют библиотеки типа libmysqlcppconn, в которой каждый метод API может бросить одно из двух исключений, причём о существовании второго мы с напарником узнали через месяц. Такие библиотеки поневоле плодят
быдлокод, падающий при отсутсвии сети или от любой другой нештатной ситуации.
Ексепшины необходимы в случае фейла в констукторе.
Однако, редко возникает необходимость делать операции с возможностью фейла в конструкторе, ну если не считать выделения памяти.