Ответ 1
Обычно я предпочитаю исключения, если вы указываете какую-либо ошибку. В противном случае вам придется потратить гораздо больше времени на обработку кода обработки ошибок на разных уровнях вашей кодовой базы, а не на централизацию обработки ошибок в соответствующих слоях системы - среди прочих причин.
Вы можете найти этот старый поток на perlmonks полезным чтением. Я воспроизведу свой комментарий ниже: поскольку я в основном согласен с тем, что я написал тогда: -)
Некоторые причины, по которым мне нравятся исключения:
-
грубости. Я могу забыть проверить возвращаемое значение ошибки. Я не могу забыть проверить исключение.
- Краткость
. Я предпочитаю:
$o->foo->bar->fribble->ni
к
$o->foo or return(ERROR_FOO); $o->bar or return(ERROR_BAR); $o->fribble or return(ERROR_FRIBBLE); $o->ni or return(ERROR_NI);
- Ясность
. С кодом на основе исключений "нормальный" поток управления более явственен, поскольку он не скрывается кодом обработки ошибок. Я думаю, что первый из двух приведенных выше примеров кода показывает намерение кода более непосредственно, чем второй.
-
Разделение проблем. Условие ошибки и обработчик ошибок - разные идеи.
-
Вы можете потребовать, чтобы ошибка обрабатывалась по-разному в зависимости от контекста.
-
Вы также можете не знать, как следует обрабатывать ошибку в той точке, в которой она встречается.
-
Возможно, вы не знаете, как следует обрабатывать ошибку во время написания кода.
С помощью стиля кода возврата-ошибки вам придется либо:
-
Предотвращать ошибки, при которых может быть принято решение о том, как их обрабатывать.
-
обработчики ошибок распространения до того места, где могут возникать ошибки
Оба параметра быстро становятся беспорядочными, если между условием ошибки и обработчиком ошибок существует много уровней кода.
-
-
Нет путаницы между возвращаемыми значениями и условиями ошибки.
Есть, вероятно, еще несколько: -)