Если вы посмотрите на начало документа Node.js для доменов, в нем говорится:
По самой природе того, как работает бросок в JavaScript, почти никогда не существует способа безопасно "забрать, где вы остановились", без утечки ссылок или создания какого-либо другого хрупкого состояния undefined.
Опять же, в примере кода, который он дает в первом разделе, он говорит:
Хотя мы предотвратили внезапный перезапуск процесса, у нас протекают ресурсы, такие как сумасшедшие
Я хотел бы понять, почему это так? Какие ресурсы протекают? Они рекомендуют использовать домены только для обнаружения ошибок и безопасного завершения процесса. Это проблема со всеми исключениями, а не только при работе с доменами? Является ли плохой практикой бросать и перехватывать исключения в Javascript? Я знаю, что это общий шаблон в Python.
ИЗМЕНИТЬ
Я могу понять, почему могут быть утечки ресурсов на не собранном мусором языке, если вы выкидываете исключение, потому что тогда любой код, который вы могли бы запускать для очистки объектов, не запускался бы, если вызывается исключение.
Единственная причина, по которой я могу представить с помощью Javascript, - это то, что если выброс исключения хранит ссылки на переменные в области, где было выбрано исключение (и, возможно, вещи в стеке вызовов), таким образом сохраняя ссылки вокруг, а затем объект исключения сохраняется вокруг и никогда не очищается. Если упомянутые утечки не являются ресурсами, внутренними для двигателя.
UPDATE
Я написал блог, объясняющий ответ на это немного лучше. Проверьте это