Sdílet prostřednictvím


Error, , IfError, IsBlankOrErrorIsErrorfunkce

Functions Vztahuje se na
Error
IfError
IsError
Aplikace plátna Copilot Studio Desktop toky Dataverse sloupce vzorců Modelem řízené aplikace Power Platform CLI Funkce Power Pages
IsBlankOrError Aplikace plátna Copilot Studio Desktop toky modelem řízené aplikace Power Platform CLI Dataverse functions Power Pages

Zjistí chyby a poskytne alternativní hodnotu nebo provede akci. Vytvořte vlastní chybu nebo předejte chybu.

Poznámka:

Pokud aplikace zakázala funkci Správa chyb na úrovni vzorce v části Nastavení>Aktualizace> Po vyřazení nebudou tyto funkce fungovat správně.

IfError

Funkce IfError testuje hodnoty, dokud nenajde chybu. Pokud funkce zjistí chybu, vyhodnotí a vrátí odpovídající náhradní hodnotu a zastaví další vyhodnocení. Výchozí hodnotu lze zadat také v případě, že nebyly nalezeny žádné chyby. Struktura se podobá struktuře IfError funkce If : IfError testuje chyby, zatímco Pokud testy jsou pravdivé.

Slouží IfError k nahrazení chyby platnou hodnotou, aby následné výpočty mohly pokračovat. Tuto funkci použijte například v případě, že by zadání uživatele mohlo mít za následek dělení nulou:

IfError( 1/x, 0 )

Tento vzorec vrátí 0 pokud je hodnota x nulová, protože 1/x vyvolá chybu. Pokud x není nula, je vráceno 1/x.

Zastavení dalšího zpracování

Při řetězení vzorců dohromady ve vzorcích chování, jako:

Patch( DS1, ... );
Patch( DS2, ... )

Druhá funkce Patch do DS2 se pokusí, i když selže funkce Patch do DS1. Rozsah chyby je omezen na každý vzorec, který je zřetězený.

Slouží IfError k provedení akce a pokračování ve zpracování pouze v případě, že akce proběhla úspěšně. Platí pro IfError tento příklad:

IfError(
    Patch( DS1, ... ), Notify( "problem in the first action" ),
    Patch( DS2, ... ), Notify( "problem in the second action" )
)

Pokud funkce Patch pro DS1 má problém, jako první se provede funkce Notify. Žádné další zpracování neproběhne, včetně druhého použití funkce Patch pro DS2. Pokud první funkce Patch uspěje, provede se druhá funkce Patch.

Při zadání je vrácen volitelný argument VýchozíVýsledek, pokud nejsou zjištěny žádné chyby. Bez tohoto argumentu je vrácen poslední argument Hodnota.

Na základě posledního příkladu je možné zkontrolovat vrácenou hodnotu IfError a zjistit, jestli nedošlo k nějakým problémům:

IfError(
    Patch( DS1, ... ), Notify( "problem in the first action" );  false,
    Patch( DS2, ... ), Notify( "problem in the second action" ); false,
    true
)

Kompatibilita typů

IfError vrátí hodnotu jednoho z jejích argumentů. Typy všech hodnot, které mohou být vráceny IfError , musí být kompatibilní.

V posledním příkladu Oprava vrací záznam, který není kompatibilní s logickými hodnotami použitými pro vzorce Nahrazení nebo Výchozí výsledek. To je v pořádku, protože neexistuje žádná situace, ve které by návratová hodnota z těchto volání Patch byla vrácena IfError.

Poznámka:

Zatímco chování v procesu změny, musí být typy všech argumentů, které mají IfError být v současné době kompatibilní.

V jednoduchém příkladu popsaném výše:

IfError( 1/x, 0 )

Typy 1/x a 0 byly kompatibilní, protože jsou oba čísla. Pokud tomu tak není, je druhý argument nucen odpovídat typu prvního argumentu.

Excel zobrazí #DIV/0! když dojde k dělení nulou.

Zvažte IfError místo toho následující:

IfError( 1/x, "#DIV/0!" )

Výše uvedený vzorec nebude fungovat. Textový řetězec "#DIV/0!" se převede na typ prvního argumentu IfErrorna , což je číslo. Výsledkem IfError je další chyba, protože textový řetězec nemůže být přetěžován. Jako opravu převeďte první argument na textový řetězec, IfError aby vždy vrátil textový řetězec:

IfError( Text( 1/x ), "#DIV/0!" )

Jak je vidět výše, může vrátit chybu, IfError pokud nahrazení nebodefaultResult je chyba.

FirstError / AllErrors

V rámci náhradních vzorců jsou informace o nalezených chybách dostupné prostřednictvím záznamu FirstError a tabulky AllErrors. AllErrors je tabulka záznamů chybových informací, přičemž FirstError je zkratkou k prvnímu záznamu této tabulky. FirstError vždy vrací stejnou hodnotu jako First( AllErrors ).

Error záznamy zahrnují:

Pole Typ Popis
Druh Výčet ErrorKind (číslo) Kategorie chyby.
Zpráva Textový řetězec Zpráva o chybě, vhodná pro zobrazení koncovému uživateli.
Zdroj Textový řetězec Místo, kde chyba vznikla, používané ve hlášení. Například pro vzorec vázaný na vlastnost ovládacího prvku je tato hodnota ve tvaru Název ovládacího prvku.Název vlastnosti.
Pozorováno Textový řetězec Místo, kde se chyba uživateli zobrazí a které se používá pro hlášení. Například pro vzorec vázaný na vlastnost ovládacího prvku je tato hodnota ve tvaru Název ovládacího prvku.Název vlastnosti.
Podrobnosti Zaznamenat Podrobnosti o chybě. V současné době jsou podrobnosti poskytovány pouze pro chyby sítě. Tento záznam zahrnuje údaj HttpStatusCode, který obsahuje stavový kód HTTP, a údaj HttpResponse, který obsahuje tělo odpovědi z konektoru nebo služby.

Například zvažte použití následujícího vzorce jako vlastnosti OnSelect ovládacího prvku Button:

Set( a, 1/0 )

A tento vzorec vlastnosti OnSelect druhého ovládacího prvku Tlačítko:

IfError( a, Notify( "Internal error: originated on " & FirstError.Source & ", surfaced on " & FirstError.Observed ) )

Příklad vzorce výše by zobrazil následující banner, když jsou postupně aktivována dvě tlačítka:

Ovládací prvek Button aktivován, zobrazuje oznámení funkce Notify.

Obvykle se vyskytne pouze jedna chyba, se kterou FirstError dokáže dostatečně pracovat. Existují však scénáře, kdy může být vráceno více chyb. Například při použití operátoru řetězení vzorce nebo funkce Concurrent. I v těchto situacích hlášení chyby FirstError může stačit k odhalení problému místo zatěžování uživatele více chybami najednou. Pokud stále chcete pracovat s každou chybou samostatně, můžete použít tabulku AllErrors.

IsError

Funkce IsError testuje chybovou hodnotu.

Vrácenou hodnotou je logická hodnota pravda nebo nepravda.

Použití IsError zabraňuje dalšímu zpracování chyby.

IsBlankOrError

Funkce IsBlankOrError testuje prázdnou hodnotu nebo chybovou hodnotu a je ekvivalentem Or( IsBlank( X ), IsError( X ) ).

Při povolování zpracování chyb u stávajících aplikací zvažte nahrazení IsBlank stávajícím chováním IsBlankOrError aplikace. Před přidáním zpracování chyb byla prázdná hodnota použita k reprezentaci hodnot null z databází i chybových hodnot. Error odděluje tyto dvě interpretace prázdných hodnot, které by mohly změnit chování stávajících aplikací, které nadále používají IsBlank.

Vrácenou hodnotou je logická hodnota pravda nebo nepravda.

Použití IsBlankOrError zabraňuje dalšímu zpracování chyby.

Error Pomocí funkce můžete vytvořit a nahlásit vlastní chybu. Například můžete mít logiku k určení, zda je daná hodnota platná pro váš kontext, či nikoli – něco, u čeho se automaticky neprovádí test přítomnosti problému. Pomocí stejného záznamu popsaného výše pro IfError funkci můžete vytvořit a vrátit vlastní chybu.

V kontextu IfErrorpoužijte Error funkci k opětovnému zvětšování nebo průchodu chybou. Vaše logika IfError se například může rozhodnout, že v některých případech může být chyba bezpečně ignorována, ale v jiných případech je chyba důležitá k odeslání. V IfError rámci nebo App.OnError použijte Error(FirstError) k předání chyby.

Funkci Error lze také předat tabulku chyb, jak by bylo nalezeno v tabulce AllErrors . K opětovnému zvětšování všech chyb použijte (AllErrors) a ne jenom první.Error

Prázdný záznam nebo prázdná tabulka předaná, aby nedošlo k Error chybě.

Syntaxe

Error( ChybaZáznam )
Error( ErrorTable )

  • ErrorRecord – Povinné. Error záznam informací, včetně pole Druh, Zpráva a další pole. Druh je povinné. FirstError lze předat přímo.
  • ErrorTable – Povinné. Tabulka se záznamy chybových informací. AllErrors lze předat přímo.

IfError( Hodnota1, Nahrazení1 [, Hodnota2, Nahrazení2, ... [, DefaultResult ] ] )

  • Hodnoty – Povinné. Vzorec nebo vzorce, ve kterých se má otestovat, jestli neobsahují chybu.
  • Náhrady – Povinné. Vzorce k vyhodnocení a hodnoty k vrácení, pokud odpovídající argumenty Hodnota vrátily chybu.
  • DefaultResult – Volitelné. Vzorce pro vyhodnocení, pokud vzorec nenajde žádné chyby.

IsError( Hodnota )
IsBlankOrError( Hodnota )

  • Hodnota – Povinné. Vzorec k testování.

Příklady

Jednoduchý IfError

Vzorec Popis Výsledek
IfError( 1, 2 ) První argument není chyba. Funkce neobsahuje žádné další chyby ke kontrole a žádnou výchozí návratovou hodnotu. Funkce vrací poslední vyhodnocený argument Hodnota. 1
IfError( 1/0, 2 ) První argument vrací chybovou hodnotu (z důvodu dělení nulou). Funkce vyhodnotí druhý argument a vrátí jej jako výsledek. 2
IfError( 10, 20, 30 ) První argument není chyba. Funkce neobsahuje žádné další chyby ke kontrole, ale obsahuje výchozí návratovou hodnotu. Funkce vrátí argument VýchozíVýsledek. 30
IfError( 10, 11, 20, 21, 300 ) První argument 10 není chyba, takže funkce nevyhodnocuje odpovídající náhradu tohoto argumentu 11. Třetí argument 20 také není chyba, takže funkce nevyhodnocuje odpovídající náhradu tohoto argumentu 21. Pátý argument 300 nemá žádnou odpovídající náhradu a je výchozím výsledkem. Funkce vrací tento výsledek, protože vzorec neobsahuje žádné chyby. 300
IfError( 1/0, Notify( "Došlo k internímu problému" ) ) První argument vrací chybovou hodnotu (z důvodu dělení nulou). Funkce vyhodnotí druhý argument a uživateli zobrazí zprávu. Návratová IfError hodnota je návratová hodnota Notify, která se převede na stejný typ jako první argument ( IfError číslo). 1

Jednoduchý IsError

Vzorec Popis Výsledek
IsError( 1 ) Argument není chyba. falešný
IsError( Blank() ) Argument je prázdný, ale ne chyba. falešný
IsError( 1/0 ) Argument je chyba. věrný
If( IsError( 1/0 ), Notify( "Došlo k internímu problému" ) ) Argument, který IsError vrátí chybovou hodnotu (kvůli dělení nulou). Tato funkce vrátí pravda, což způsobí, že funkce If zobrazí zprávu uživateli pomocí funkce Notify. Návratová hodnota funkce If je návratovou hodnotou funkce Notify, která je převedená na stejný typ jako první argument funkce If (logická hodnota). věrný

Jednoduchý IsBlankOrError

Vzorec Popis Výsledek
IsBlankOrError( 1 ) Argument není ani chyba, ani prázdná hodnota. falešný
IsBlankOrError( Blank() ) Argument je prázdný. věrný
IsBlankOrError( 1/0 ) Argument je chyba. věrný

Jednoduchý Error

V tomto příkladu jsou kalendářní data ověřována relativně vůči sobě, což vede k chybě, pokud dojde k problému.

If( StartDate > EndDate,
    Error( { Kind: ErrorKind.Validation, Message: "Start Date must be before End Date" } ) )

V tomto příkladu mohou některé chyby projít, zatímco jiné jsou potlačeny a nahrazeny hodnotou. V prvním případě b je v chybovém stavu, protože Hodnota funkce má neplatný argument. Protože je to neočekávané zapisovatelem vzorců, je to předáno, takže to uživatel vidí. Ve druhém případě se stejným vzorcem b má hodnotu 0, výsledkem je dělení nulou. V tomto případě může autor vzorce vědět, že je to pro tuto logiku přijatelné, potlačí chybu (nezobrazí se žádný nápis) a vrátí místo chyby -1.

With( {a: 1, b: Value("a")},
      IfError( a/b, If( FirstError.Kind <> ErrorKind.Div0, Error( FirstError ), -1 ) ) )
// returns an error with Kind = ErrorKind.InvalidArgument

With( {a: 1, b: 0} )
      IfError( a/b, If( FirstError.Kind <> ErrorKind.Div0, Error( FirstError ), -1 ) ) )
// returns -1

Tabulku AllErrors lze filtrovat jako kteroukoli jinou tabulku. Používá se Error s funkcí, lze odebrat očekávané chyby a zbývající chyby zůstanou zachovány a hlášeny. Pokud bychom například věděli, že dělení nulou nebude v konkrétním kontextu problém, mohly by být tyto chyby odfiltrovány a všechny ostatní chyby zůstaly nedotčené podle následujícího vzorce:

Error( Filter( AllErrors, Kind <> ErrorKind.Div0 ) )

Podrobný postup

  1. Přidejte ovládací prvek Text input a pojmenujte ho TextInput1, pokud už se tak ve výchozím nastavení nejmenuje.

  2. Přidejte ovládací prvek Popisek a pojmenujte ho Label1, pokud už se tak ve výchozím nastavení nejmenuje.

  3. Nastavte vzorec pro vlastnost Text prvku Label1 na:

    IfError( Value( TextInput1.Text ), -1 )
    
  4. V TextInput1 zadejte 1234.

    Label1 ukazuje hodnotu 1234 protože se jedná o platný vstup do funkce Value.

  5. V TextInput1 zadejte ToInfinity.

    Label1 ukazuje hodnotu -1 protože to není platný vstup do funkce Value. Bez zabalení funkce IfErrorValue by popisek nezobrazit žádnou hodnotu, protože chybová hodnota je považována za prázdnou.

Viz také

Odkaz na vzorec pro Power Apps