Power Fx では、数式レベルのエラー処理がサポートされています。 この機能は、すべての新しいアプリで既定で有効になっています。 ただし、一部の古いアプリでは、アプリ の設定で無効になっている可能性があります。 この機能はオンにしておくことをお勧めします。
この機能が有効になっているかどうかを確認するには:
- 編集用のキャンバス アプリを開きます。
- 設定>Updates>Retired タブに移動します。
- [ 数式レベルの管理を無効にする ] がオフになっていることを確認します。
この設定を有効にすると、 IfError、 IsError、 Error、 IsBlankorErrorなどの数式を使用できます。 これらの関数は、エラーの検出、代替値の提供、またはエラーに基づく特定のアクションの実行に役立ちます。 この設定を有効にすると、データ ソースに null 値または空白値を書き込むことができます。 この機能をオフにすると、エラーは空白値として返されます。
検証エラーの処理
これらの関数は、形式が正しくない、必須フィールドなどの入力を検証するのに役立ちます。
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
)