@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のセマンティックヌラビリティのエクスペリメンタルサポートの詳細をご覧ください。