Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【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'イベントとして放出されます。

関連コンテンツ

関連プログラミング言語