【Node.js24.x】EventEmitter::captureRejectionsプロパティの使い方
captureRejectionsプロパティの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
captureRejectionsプロパティは、Node.jsのEventEmitterモジュールに属し、Promiseを返す非同期イベントハンドラーからのエラーを自動的に捕捉するかどうかを制御するプロパティです。このプロパティをtrueに設定すると、EventEmitterから発行されたイベントに対するハンドラーがPromiseを返し、そのPromiseが拒否(reject)された場合に、EventEmitterは自動的に'error'イベントを発行します。これにより、非同期処理におけるエラーも、一般的なEventEmitterのエラーハンドリングメカニズムであるeventEmitter.on('error', handler)で一元的に処理できるようになり、エラーの見落としを防ぐことができます。
一方、captureRejectionsプロパティがfalseの場合(Node.js 16以降のデフォルト値)、Promiseが拒否されても'error'イベントは自動的に発行されません。この場合、開発者はPromiseチェーンのcatchブロックで明示的にエラーを処理するか、未処理のPromise拒否としてprocess.on('unhandledRejection')リスナーで捕捉する必要があります。未処理のPromise拒否はアプリケーションの安定性に影響を与える可能性があるため、適切なエラーハンドリングが不可欠です。
このプロパティは、特定のEventEmitterインスタンスに対して個別に設定することも、EventEmitterクラス全体に対して設定することも可能ですが、特定のインスタンスに設定する方が、予期せぬグローバルな副作用を防ぐ観点から推奨されます。非同期処理を多用するNode.jsアプリケーションにおいて、エラー処理の一貫性を保ち、未捕捉のエラーによるアプリケーションのクラッシュを防ぐために重要な役割を果たします。
構文(syntax)
1const EventEmitter = require('events'); 2const myEmitter = new EventEmitter(); 3 4myEmitter.captureRejections = true;
引数(parameters)
引数なし
引数はありません
戻り値(return)
boolean
EventEmitterインスタンスでイベントリスナーの例外をキャプチャするかどうかを示します。trueの場合、例外はキャプチャされて'error'イベントとして放出されます。