メインコンテンツへスキップ
バージョン: v18.0.0

@throwOnFieldErrorディレクティブ

@throwOnFieldErrorディレクティブは、フラグメントとクエリに追加できます。このディレクティブを使用すると、フラグメントまたはクエリの読み取り中にフィールドエラーが発生した場合、またはグラフの関係の変更のためにRelayにデータが不足している場合、Relayランタイムが例外をスローします。

フィールドエラーが発生した場合にRelayランタイムが例外をスローする原因に加えて、@throwOnFieldErrorディレクティブは、スキーマに@semanticNonNullディレクティブを持つフィールドにnull以外のFlowタイプを生成することもできます。これは、フィールドに@semanticNonNullディレクティブがある場合、そのフィールド用に生成されたFlowタイプはnull可能ではないことを意味します。そのフィールドの読み取り中にエラーが発生すると、スローされた例外によりアプリケーションがnull値を受け取れなくなります。

@throwOnFieldErrorディレクティブを使用するには、Relayコードのフラグメントまたはクエリに追加します。次のような場合

fragment MyFragment on User @throwOnFieldError {
id
name
}

この例では、@throwOnFieldErrorディレクティブがMyFragmentフラグメントに追加されています。このフラグメント内のいずれかのフィールド(この場合はidとname)にフィールドエラーがある場合、Relayランタイムはフラグメントの読み取り時に例外をスローします。

@throwOnFieldErrorフラグメントまたはクエリ内で特定のフィールドエラーをローカルに処理し、そのエラーをスローする代わりに、@catchを使用してエラーをキャッチできます。

Relayのセマンティックヌラビリティのエクスペリメンタルサポートの詳細をご覧ください。