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
)