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