Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.07.2021, 00:49
Новичок на форуме
Отправить личное сообщение для Megabyte Посмотреть профиль Найти все сообщения от Megabyte
 
Регистрация: 10.07.2021
Сообщений: 5

Разве try catch в dev библиотеках не затрудняет разработку?
Не могу не написать. Интересует ваше мнение.
Очень часто в dev версиях библиотек все обернуто в try catch, которое перехватывает ошибку и рисует ее в красивой красной рамочке с уточнением, что именно наша отважная библиотека перехватила ошибку в вашем коде секунду назад. Круто.
Но гараздо удобнее видеть ошибку в том месте где она произошла, с текущим стеком и всеми аргументами, непосредственно в момент выполнения упавшего кода. Это упрощает понимание происходящего.
Сегодня для эксперимента удалил try catch в react.dev.js и ошибки в render функциях стало очень удобно анализировать и исправлять.
Почему авторы библиотек не понимают что нужно для удобной разработки, а что для прода?
Если я не прав - прошу вразумить. Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 10.07.2021, 10:38
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 13,435

Megabyte, знаешь почему булочки продают по 3шт, а сосиски по 5шт?
Ответить с цитированием
  #3 (permalink)  
Старый 10.07.2021, 22:46
Новичок на форуме
Отправить личное сообщение для Megabyte Посмотреть профиль Найти все сообщения от Megabyte
 
Регистрация: 10.07.2021
Сообщений: 5

Это первая мудрость пуленепробиваемого монаха. Но в моем вопросе это как поможет? : )
Ответить с цитированием
  #4 (permalink)  
Старый 11.07.2021, 11:56
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 13,435

Сообщение от Megabyte
Но в моем вопросе это как поможет?
Это собственно и есть ответ на твой вопрос.
Ответить с цитированием
  #5 (permalink)  
Старый 11.07.2021, 14:07
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,034

Ответ: потому что жизнь - боль.
Я хз почему отладка реакта превращается в пляски с бубном. Мне постоянно не покидает чувство, что наверное я просто что-то не понимаю и делаю не так. Но нагуглить как делать "так" - тоже не получается...
__________________
29375, 35
Ответить с цитированием
  #6 (permalink)  
Старый 11.07.2021, 21:32
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 13,435

Сообщение от Aetae
Я хз почему отладка реакта превращается в пляски с бубном.
Я для себя сделал такое "наблюдение"... Нужно просто привыкнуть к сообщениям об ошибках на каком-либо языке (пришлось сменять несколько раз). Когда привыкаешь - становится понятно и разницы уже нет никакой.

Оно конечно, сложность программ у всех разная... Но я довольно быстро "разруливаю" проблемы в Реакте, с которыми обращаются мои сотрудники.
Как правило это они и являются источниками проблем.
Если все "разложить" на простые элементы/функции - все становится понятно.
Ответить с цитированием
  #7 (permalink)  
Старый 11.07.2021, 21:34
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 13,435

Сообщение от Aetae
Но нагуглить как делать "так" - тоже не получается...
Я сначала читаю книги по ЯП/библиотеки. Там более академично рассказывают принципы того или иного ЯП/библиотеки...
Если их придерживаться - проблем почти не возникает.
Ответить с цитированием
  #8 (permalink)  
Старый 11.07.2021, 22:32
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,034

ksa, вот например ошибки вида
Цитата:
Objects are not valid as a React child (found: object with keys {hasError, filesIds}). If you meant to render a collection of children, use an array instead.
пиздец неинформативные. Я понимаю что где-то прилетел объект вместо ReactNode. Но и только.
В стеке только куча внутреннего реакт мусора и примерное(очень, сука, примерное) имя компонента. Кодовая база - легаси, написанный криворучками на чистом js.
И вот как это диагностировать не тратя кучу времени на ручной перебор? Куда оно конкретно прилетело и откуда? Хз.
Простите за экспрессию.)
__________________
29375, 35
Ответить с цитированием
  #9 (permalink)  
Старый 11.07.2021, 23:54
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 13,435

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

Так вот я с этим согласен.
Просто собираю свою "коллекцию" сообщений и "ситуаций". Это потом позволяет в диагностике "типичных" ситуаций.

Сообщение от Aetae
Простите за экспрессию.)
Всяко бывает в нашей практике...
Но, думаю, ты найдешь охайничков.
Ответить с цитированием
  #10 (permalink)  
Старый 12.07.2021, 01:16
Новичок на форуме
Отправить личное сообщение для Megabyte Посмотреть профиль Найти все сообщения от Megabyte
 
Регистрация: 10.07.2021
Сообщений: 5

Сообщение от Aetae Посмотреть сообщение
ksa, вот например ошибки вида пиздец неинформативные. Я понимаю что где-то прилетел объект вместо ReactNode. Но и только.
В стеке только куча внутреннего реакт мусора и примерное(очень, сука, примерное) имя компонента. Кодовая база - легаси, написанный криворучками на чистом js.
И вот как это диагностировать не тратя кучу времени на ручной перебор? Куда оно конкретно прилетело и откуда? Хз.
Простите за экспрессию.)

Эта ошибка возникает в старом реакте без классов. Если компонентам проставить displayName, то сообщения об ошибках станут информативнее.

Как раз эту ошибку сложно отловить в месте возникновения, так как валидация происходит после выхода из метода. Тут бы пригодился механизм получения имени файла и строки в исходнике для произвольного метода. Например, вызвать метод с пустым this от чего он упадет, перехватить эту ошибку через try catch и из стека узнать местонахождение метода в коде.

Последний раз редактировалось Megabyte, 12.07.2021 в 01:18.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск