Работа с исключениями
Избитая тема, ну да ладно, пишу с примерами. Коротко правила работы выражаются двумя тезисами:
- исключение это не способ вернуть ответ из функции
- если не можешь обработать исключение - отпусти его
Итак, у нас есть функция которая работает с некоторым АПИ
Далее мы имеем какой то клиентский код, который должен получить значение параметра
Итак, всё хорошо, и мы полагаемся на то метод getProperty вернёт значение, и потом мы его приклеем к нашей строке и всё будет хорошо. Но что если метод вернёт нам null, конечно нас это не сильно волнует, у нас же JS и приведение типов и всё такое, и может быть нас это и строит, но по факту - представим что мы не должны показывать Null как строку.
В ситуации когда приложение может работать без данных, мы должны предполагать что данные могут быть не получены! По старинке это делается так
В случае организации кода с исключениями, в местах где мы можем продолжить работу без исключений мы делаем так:
Таким образом, мы обрабатываем исключение только в местах где мы можем продолжить работу в случае возникновения исключения, нам не нужно везде проверять что наша функция вернула null, мы ловим исключения только там где мы можем его исправить, а где не можем - не ловим.
Фактически, ничего не меняется для нашего приложения, если наше приложение может работать с потерей функциональности некоторых функций - мы явно закладываем эту возможность в наш код. Если мы не можем работать с потерей функциональности - ничего не меняется, так как в случае если какая та функция вернёт невалидный результат который не будет обработан, наше приложение закрашится и остановит работу.
Тогда спрашивается, а заем же тогда исключения, а пригодны они как раз для того, чтобы мы обрабатывали ошибки только в тех местах, которые могут продолжить работу при отказе какой то функции, и не беспокоились об этом в других местах нашего приложения.