Pull to refresh

Comments 11

>window.addEventListener('error',

Вот бы вы поделились опытом как аналогичное сделать в расширении Firefox? Как раз сейчас решаю такую задачу, никак не пойму к кому привязаться. window нет, можно создать, но к исполняющемуся коду оно никакого отношения иметь не будет.
Ммм. Возможно я ошибаюсь и чего то не знаю, но там описан способ создать window и загрузить туда как то контент. А вот как привязать background.js к этому window? Что бы при ошибке в background.js срабатывал error listener в этом window?
Понял, надо попробовать. У меня правда bootstraped расширение, но думаю разберусь. Спасибо!
Я правильно понимаю, что это хороший принцип почти для любого языка?
Я правильно понимаю, что это хороший принцип почти для любого языка
Нет. В некоторых хороших языках рассматриваемая ошибка (вызов несуществующего метода) отлавливается на этапе компиляции. Еще в некоторых хороших языках не существует исключений.
… или не отлавливается, если модули системы грузятся динамически, и в каком-нибудь интерфейсе какого-нибудь компонента не реализован какой-нибудь метод, который ожидается другим динамическим компонентам. Ну там из-за dll hell, несоответствия версий интерфейсов или чего-нибудь такого.
И поскольку в таких хороших языках нет простых штатных методов работы с такими ситуациями, то исключение кидает уже ОС.
Я думаю, можно добавить в статью примечание про промисы:
  • внутри промисов нет смысла использовать try...catch, потому что промис автоматически отлавливает их и переходит в rejected
  • если в цепочке промисов вы не напишите .catch, но никакой window.onerror вашу ошибку не поймает. Ждем https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onunhandledrejection
  • в ноде непойманные ошибки в промисах вообще тихо проглатываются https://github.com/nodejs/node/issues/830
> в ноде непойманные ошибки в промисах вообще тихо проглатываются https://github.com/nodejs/node/issues/830

Вы ищете https://nodejs.org/api/process.html#process_event_unhandledrejection
Я боюсь, что в 2016 году «правильная обработка ошибок в асинхронном js» — это всё-таки уже Promises и async/await, про что в этой статье не написано почти ничего.

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

Sign up to leave a comment.