【Node.js24.x】EventEmitter::captureRejectionSymbolプロパティの使い方
captureRejectionSymbolプロパティの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
captureRejectionSymbolプロパティは、Node.jsのEventEmitterクラスに属し、非同期のリスナー関数内で発生したPromiseのrejection(拒否)を捕捉するための特別なSymbolを保持するプロパティです。EventEmitterはイベントを発行し、そのイベントを処理するリスナー関数を登録する仕組みを提供しますが、リスナー関数が非同期(async)である場合、その中で発生したPromiseがrejectionされたとしても、通常のtry-catchブロックでは捕捉しきれないことがあります。
このcaptureRejectionSymbolプロパティは、そのような未処理のPromise rejectionを明示的に捕捉し、対応するためのメカニズムを提供します。具体的には、EventEmitterインスタンスの[captureRejectionSymbol]プロパティに、Promiseのrejectionを処理する関数を設定することで、非同期リスナーからrejectされたPromiseが、通常の'error'イベントハンドラに渡される前に、この特別なハンドラで捕捉されるようになります。これにより、未処理のPromise rejectionが原因でNode.jsプロセスが突然終了してしまう事態を防ぎ、より堅牢なエラーハンドリングを実装することが可能になります。システムエンジニアにとって、アプリケーションの安定性を確保し、予期せぬクラッシュを回避するために重要な役割を果たすプロパティと言えます。
構文(syntax)
1const EventEmitter = require('node:events'); 2 3const rejectionSymbol = EventEmitter.captureRejectionSymbol;
引数(parameters)
引数なし
引数はありません
戻り値(return)
symbol
EventEmitterクラスのcaptureRejectionSymbolプロパティは、非同期処理で発生したエラーをキャッチするためのシンボルを返します。このシンボルは、EventEmitterインスタンスのonメソッドやemitメソッドと組み合わせて使用することで、エラーハンドリングの仕組みをカスタマイズするために利用されます。