Ответы пользователя по тегу Исключения
  • Как отловить исключение в JS Promise без присваивания отдельной переменной?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    нет возможности вернуть всю цепочку примисов

    Как так? Всегда возвращайте всю цепочку.
    Ответ написан
  • Какие данные нужно проверять в методах?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    возможно в будущем будет введен тайп-хинтинг для скаляров.

    Есть отдельный компонент Symfony/config, который отвечает за валидацию настроек. То есть каждый компонент описывает все варианты настроек которые он хочет получить, какой формат данных допустим, значения по умолчанию и т.д. Валидацией же всего этого и сборкой занимается отдельный компонент. Возможно по этой причине так мало проверок в коде Laravel, ибо все эти проверки были сделаны на более ранних этапах.

    По сути в фреймворках использующих Dependency Injection подход с отдельным компонентом для валидации параметров будет самым удобным. Вся логика по проверке и весь бойлерплейт код уходят, а код самого компонента остается чистым. Таким образом необходимость проверять входные данные остается только для публичных методов, и то в некоторых случаях этим можно пренебречь.
    Ответ написан
  • Как правильно использовать исключения?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ну приведу простой пример. У вас есть функция которая должна открывать соединение с базой данных/читать из файла/подключаться к сокету... словом любая функция возвращающая некий ресурс, при помощи которого в дальнейшем будет осуществляться доступ к чему-то там.

    Функция должна вернуть какой-то результат, причем определенного типа. Что вы будете делать в случае ошибки? А как уведомить разработчика что именно пошло не так?

    Для этого ввели механизм исключений. Если в функции что-то идет не так, можно сформировать исключение со всей имеющейся по ошибке информации и выбросить его.

    Если вы используете конструкцию try/catch в использующем эту функцию коде, то вместо крэша у вас вызовется один из обработчиков catch (вы можете спускаться по иерархии классов, задавая различное поведение для разного рода ошибок), возможно произведете какие-то уточнения в данных, переспросите пользователя и программа продолжит работу совершенно нормально.
    Ответ написан
    2 комментария
  • Javascript try..catch?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    На клиентской части try/catch используются редко, потому ситуации с исключениями связаны с несуществующими методами/переменными/свойствами. Но если речь идет скажем о работе с файлами или еще чего такое, они могут быть полезны. Так же полезно

    Я увы мало работал с серверным JS, но когда разбирался с ним, а точнее выбирал между Erlang и Node.js мне на глаза попалась статья о том, что все в Node.js надо оборачивать в try/catch. Это связано с тем, что если что-то упадет, а ситуации бывают разные, то упадет и весь сервер. А вам это точно радости не прибавит.
    Ответ написан
    Комментировать