Power Fx 言語には、数式レベルのエラー処理を有効にする新しいプレビュー機能があります。 この設定は既定でオンになっています。
この設定により、IfError
、IsError
、Error
、IsBlankorError
のような数式にアクセスできるようになります。 これらの関数を使用すると、エラーを検出したり、代替値を提供したり、発生したエラーに基づいて特定のアクションを実行したりできます。
検証エラー処理
上記の関数は、不正なフォーマットや必須フィールドなどの入力を検証する際に役立ちます。
If
文や IsBlank
や IsError
のような関数を使用して、ユーザー入力を検証します。 明確なエラー メッセージを提供し、入力が修正されるまでそれ以上の処理が行われないようにします。
If( IsBlank(TextInput.Text),
Notify("Field cannot be blank",
NotificationType.Error),
// Continue with processing
)
パッチ関数のエラー処理
前の例と同様に、Error
関数は、データ ソース にデータをパッチ適用するときにエラーを検出する際に役立ちます。
Patch
関数は 2 つの方法でエラーを報告します。
操作の結果としてエラー値を返すこともあります。
UpdateContext(
{
result : Patch(
Feeds,
Defaults(Feeds),
{
createdon: Now(),
crde8_content: TextInput1_1.Text
cr9ce_imageurl: filename
}
)
}
)
エラーは IsError
で検出され、IfError
で置換または抑制されます
IfError(result, Notify("There was an issue saving data" , NotificationType.Error));
IfError(result, Notify("There was an issue saving data" , & FirstError.Message, NotificationType.Error))
If(
IsError(
Patch(
Feeds,
Defaults(Feeds),
{
createdon: Now(),
crde8_content: TextInput1_1.Txt,
cr9ce_imageurl: filename
}
)
),
Notify("Error: There was an issue saving data", NotificationType.Error)
)
フォームのエラー処理
フォームを使用して SubmitForm
関数でデータを送信する場合、フォーム コントロールのプロパティ OnFailure
を使用してエラー メッセージを通知します。
// OnSelect property of the form's submit button
SubmitForm(frm_SubmitData);
// OnSuccess property of the form
Navigate('Success Screen');
// OnFailure property of the form
Notify("Error: the invoice could not be created", NotificationType.Error);
OnError プロパティを使用したカスタム エラー メッセージ
Power Apps OnError
は、処理されていないエラーをすべてキャプチャできるアプリのプロパティです。
OnError
プロパティは、エラーがアプリによって処理されないたびに実行される式を実行する機能を提供します (変数に格納したり、IfError
のような関数を使用して他の値に置き換えるなど)。
OnError
プロパティを使用するには、それを適用するアプリに追加する必要があります。 次に、OnError
プロパティ ボックスに数式を記述して、表示したいエラー メッセージを指定します。
App.OnError
は、IfError
ができるのと同じ方法ではエラーを置換できないことに注意してください。
App.OnError
が実行された時点で、エラーは既に発生しており、結果は他の数式を通じて伝播されています。
App.OnError
は、エンド ユーザーにエラーを報告する方法のみを制御し、必要に応じて作成者がエラーをログに記録するためのフックを提供します。
このコードは App.OnError
エラーの原因を特定するのに役立ちます:
Notify(
Concatenate(
FirstError.Message,
", Observed: ",
FirstError.Observed,
", Source: ",
FirstError.Source
),
NotificationType.Error
)