Про обработку ошибок, валидацию и исключения в JS

preview_player
Показать описание
#soer #ityoutubersru

Вопрос из инстаграм
Рекомендации по теме
Комментарии
Автор

Может же! Он просто великолепен. Такой глубины познаний и витьеватости мысли не встретишь нигде!

vyacheslavgvorus
Автор

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

luckystrike
Автор

В Java есть чисто техническая причина, по которой предпочитают исключения. С помощью ключевого слова throws мы можем явно декларировать, какие исключения выкидывает тот или иной метод. То есть исключения становятся частью контракта вместе с интерфейсом. Мне кажется, имеет смысл это добавить.

enkryp
Автор

Мне нравится подход Go в этом плане, там нет исключений, но каждая функция, где что-то может пойти не так, возвращает вторым аргументом error

arturg
Автор

где-то читал такую штуку - "Бросать исключение нужно только в том случае, если ваша функция не может выполнить/вернуть то, что обещает"

norzqq
Автор

Поэтому лучше использовать TypeScript, и большую часть проверок возложить на компилятор

vitaliktereshchenko
Автор

Почему это в js не приняты исключения? В axios и nest например часто используются исключения. Другое дело что старый асинхронный код на коллбеках с исключениями работает неоднозначно так как выброс исключения и попытка его отловить могут оказаться на разных тиках и в разных макрозадачах.

bubblesort
Автор

Что понимается под корректностью? Если вместо исключения функция возвращает undefined это корректно?

vavilov
Автор

Контракт это документация или что-то другое?

SlavaCh
Автор

Это не валидация, это типизация
TypeScript в помощь

victormog
Автор

В Rust, Scala, Haskell и др. языках таких вопросов даже не возникает "by design".

a.sorokin
Автор

PHP в этом смысле явно двигается в направлении Java. Что насчёт JS?

lenkbelk
Автор

А вы много пишете JS? И, если да, для себя или по работе?)

nickml
Автор

Ну что же насчёт исключений в js понятно, а как насчёт бросать исключения в js на typescript?

ievheniiierokhin
Автор

Добавлю еще, что надо делать либу так, чтобы с ней было приятно работать, а не было
-Петька, приборы!
-40!
-Что 40?
-А что приборы?

В js лучше все провалидировать, и потом быть уверенным, что всё ок, а не кидать радномные исключения и делать хз что, потому что юзер так вызвал.

crutchmaster
Автор

Что за идеи, что в JS не используются исключения? Как это "не используются"? Иногда кажется, что некоторые на каком-то другом JS пишут, где у них половина всех возможностей просто не используются, по какой-то причине.

skpavlenko