ドメインの Node.js ドキュメントの冒頭を見ると、次のように記載されています。
JavaScript で throw がどのように機能するかという性質上、参照を漏らしたり、他の種類の未定義の脆弱な状態を作成したりせずに、安全に「中断したところから再開する」方法はほとんどありません。
再びコード例では、最初のセクションで次のように述べています。
突然のプロセスの再起動を防いでいますが、狂ったようにリソースをリークしています
なぜそうなのかを理解したいのですが?どのリソースがリークしていますか? 彼らは、ドメインのみを使用してエラーをキャッチし、プロセスを安全にシャットダウンすることを推奨しています。これは、ドメインを操作するときだけでなく、すべての例外で問題になりますか? Javascriptで例外をスローしてキャッチするのは悪い習慣ですか? 私はそれがPythonの一般的なパターンであることを知っています。
編集
例外がスローされた場合、オブジェクトをクリーンアップするために実行する可能性のあるコードは実行されないため、例外をスローすると、ガベージコレクションされていない言語でリソースリークが発生する可能性がある理由を理解できます。
私がJavascriptで想像できる唯一の理由は、例外をスローすると、例外がスローされたスコープ(およびおそらくコールスタック内のもの)に変数への参照が保存され、参照が保持され、例外オブジェクトが保持され、決して保持されない場合です。クリーンアップされます。言及されているリークしているリソースがエンジン内部のリソースでない限り。
アップデート
これに対する答えを説明するブログを書きました。見てみな