История изменений
Исправление
Legioner,
(текущая версия)
:
А смысл? От исключений уходят ради «большей явности» и лучшей (само)документированности кода - по сигнатуре видно какие проблемы могут возникнуть.
Я не вижу смысла в этой информации — какие проблемы могут возникнуть. Когда я пишу функцию, которая выполняет SQL-запрос, я не собираюсь думать о том, что у меня может выпасть сетевой кабель, сервер БД может уйти в перезагрузку, пьяная обезьяна может удалить таблицу и тд. Мне всё это совершенно неинтересно. Мне даже не интересен в принципе случай, когда SQL-запрос может не выполниться. Я живу в волшебном мире, в котором этот SQL-запрос всегда выполняется успешно и я думаю о том, что мне делать с его результатами. Я не против того, чтобы эта информация была, пусть в IDE будет кнопочка «показать все возможные исключения, которые могут вылететь из этой функции», в принципе это всё статически выводится.
А вот о том, что делать, когда сетевой кабель выпадает, я уже буду думать, когда буду писать глобальный обработчик ошибок, который будет сидеть выше по стеку. И, опять же, мне в этот момент совершенно не интересно, какой там запрос выполнялся, я думаю, как мне обработать ошибку.
Этот подход позволяет писать чистый и понятный код в 99% случаев. По крайней мере в программах, которые я пишу. Допускаю, что есть программы, в которых этот подход хуже, чем явные проверки на каждый чих. Я с ними не сталкивался. Мне очень сложно вспомнить какие-либо случаи, когда я бы хотел обработать исключительную ситуацию. Это тот самый 1% и писать весь код для него я считаю глупостью.
Если это будет делать компилятор автоматически, то чем оно от исключений отличаться будет?
Не знаю, видимо ничем. Разве что тормозить будет чуть больше.
Исходная версия
Legioner,
:
А смысл? От исключений уходят ради «большей явности» и лучшей (само)документированности кода - по сигнатуре видно какие проблемы могут возникнуть.
Я не вижу смысла в этой информации — какие проблемы могут возникнуть. Когда я пишу функцию, которая выполняет SQL-запрос, я не собираюсь думать о том, что у меня может выпасть сетевой кабель, сервер БД может уйти в перезагрузку, пьяная обезьяна может удалить таблицу и тд. Мне всё это совершенно неинтересно. Мне даже не интересен в принципе случай, когда SQL-запрос может не выполниться. Я живу в волшебном мире, в котором этот SQL-запрос всегда выполняется успешно и я думаю о том, что мне делать с его результатами.
А вот о том, что делать, когда сетевой кабель выпадает, я уже буду думать, когда буду писать глобальный обработчик ошибок, который будет сидеть выше по стеку. И, опять же, мне в этот момент совершенно не интересно, какой там запрос выполнялся, я думаю, как мне обработать ошибку.
Этот подход позволяет писать чистый и понятный код в 99% случаев. По крайней мере в программах, которые я пишу. Допускаю, что есть программы, в которых этот подход хуже, чем явные проверки на каждый чих. Я с ними не сталкивался. Мне очень сложно вспомнить какие-либо случаи, когда я бы хотел обработать исключительную ситуацию. Это тот самый 1% и писать весь код для него я считаю глупостью.
Если это будет делать компилятор автоматически, то чем оно от исключений отличаться будет?
Не знаю, видимо ничем. Разве что тормозить будет чуть больше.