Zdieľať cez


Error, IfError, IsError, IsBlankOrError funkcie

Functions Vzťahuje sa na
Error
IfError
IsError
Aplikácie plátna Copilot Studio Desktop – postupy vzorcov Dataverse stĺpce Modelom riadené aplikácie Power Platform CLI Dataverse funkcie Power Pages
IsBlankOrError Aplikácie plátna Copilot Studio Desktop postupy modelom riadené aplikácie Power Platform CLI Dataverse funkcie Power Pages

Zistí chyby a poskytne alternatívnu hodnotu alebo vykoná akciu. Vytvorte vlastnú chybu alebo prejdite cez chybu.

Poznámka

Ak aplikácia zakázala funkciu Správa chýb na úrovni vzorca v časti Nastavenia>Aktualizácie> Po ukončení tieto funkcie nebudú fungovať správne.

IfError

Funkcia IfError testuje hodnoty, kým nenájde chybu. Ak funkcia zistí chybu, funkcia vyhodnotí a vráti zodpovedajúcu hodnotu výmeny a zastaví ďalšie vyhodnocovanie. Predvolenú hodnotu je možné zadať aj vtedy, keď sa nenájdu žiadne chyby. Štruktúra štruktúry sa podobá na štruktúru funkcie If: IfError testuje chyby, zatiaľ čo funkcia IfErrorIf testuje hodnotu true.

Používa IfError sa na nahradenie chyby platnou hodnotou, aby následné výpočty mohli pokračovať. Túto funkciu použite napríklad v prípade, že by mohol mať používateľský vstup za následok delenie nulou:

IfError( 1/x, 0 )

Tento vzorec vráti 0 ak hodnota x je nula, pretože 1/x vyvolá chybu. Ak x nie je nula, vráti 1/x.

Zastavenie ďalšieho spracovania

Pri reťazení vzorcov vo vzorcoch správania, ako napríklad:

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

Druhá funkcia Patch na DS2 sa pokúsi, aj keď Patch na DS1 zlyhá. Rozsah chyby je obmedzený na každý vzorec, ktorý je reťazený.

Použite funkciu IfError na vykonanie akcie a pokračujte v spracovaní iba v prípade, že akcia bola úspešná. Použitie IfError na tento príklad:

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

Ak má funkcia Patch z DS1 problém, vykoná sa prvé Oznámenie. Nenastane žiadne ďalšie spracovanie vrátane druhej funkcie Patch pre DS2. Ak je prvá funkcia Patch úspešná, druhá funkcia Patch sa vykoná.

Ak je zadaný, voliteľný argument DefaultResult argument sa vráti, ak sa nezistia žiadne chyby. Bez tohto argumentu sa vráti posledný argument Value.

Na základe posledného príkladu je možné skontrolovať vrátenú hodnotu, IfError aby sa zistilo, či nedošlo k problémom:

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

Kompatibilita typov

IfError vráti hodnotu jedného z jej argumentov. Typy všetkých hodnôt, ktoré môžu byť vrátené IfError , musia byť kompatibilné.

V poslednom príklade Oprava vracia záznam, ktorý nie je kompatibilný s logickými údajmi používanými pre vzorce Nahradenie alebo Predvolený výsledok. Čo je v poriadku, pretože neexistuje situácia, v ktorej by vrátená hodnota týchto volaní funkcie Patch bola vrátená funkciou IfError.

Poznámka

Zatiaľ čo správanie prebieha v procese zmeny, typy všetkých argumentov, ktoré IfError majú byť aktuálne kompatibilné.

V jednoduchom príklade opísanom vyššie:

IfError( 1/x, 0 )

Druhy1/x a0 boli kompatibilné, pretože obidve boli čísla. Ak nie sú, druhý argument sa vynúti, aby sa zhodoval s typom prvého argumentu.

Excel zobrazí #DIV/0! keď dôjde k deleniu nulou.

Namiesto toho zvážte IfError nasledujúce:

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

Vyššie uvedený vzorec nebude fungovať. Textový reťazec "#DIV/0!" sa vynúti na typ prvého argumentu do IfError, čo je číslo. Výsledkom IfError je ďalšia chyba, pretože textový reťazec sa nedá vynútiť. Ako opravu skonvertujte prvý argument na textový reťazec, aby sa IfError vždy vrátil textový reťazec:

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

Ako môžete vidieť vyššie, môže vrátiť chybu, IfError ak je chyba v časti Náhradné alebo DefaultResult .

FirstError/AllErrors

V rámci náhradných vzorcov sú informácie o chybách dostupné prostredníctvom záznamu FirstError a tabuľky AllErrors. AllErrors je tabuľka záznamov s informáciami o chybách, pričom FirstError je skratkou k prvému záznamu tejto tabuľky. FirstError vždy vráti rovnakú hodnotu ako First( AllErrors ).

Error záznamy zahŕňajú:

Pole Type Description
Milý Enumerácia ErrorKind (číslo) Kategória chyby.
Správa Textový reťazec Správa o chybe, vhodná na zobrazenie koncovému užívateľovi.
Zdroj Textový reťazec Miesto, kde chyba vznikla, používané na vykazovanie. Napríklad pre vzorec viazaný na vlastnosť ovládacieho prvku je táto hodnota v tvare Názov ovládacieho prvku.Názov vlastnosti.
Pozorované Textový reťazec Miesto, kde sa chyba zobrazí používateľovi, používa sa na vykazovanie. Napríklad pre vzorec viazaný na vlastnosť ovládacieho prvku je táto hodnota v tvare Názov ovládacieho prvku.Názov vlastnosti.
Podrobné informácie Record Podrobnosti o chybe. V súčasnosti sú podrobnosti poskytované iba pre chyby siete. Tento záznam obsahuje HttpStatusCode ktorý obsahuje stavový kód HTTP a HttpResponse ktorý obsahuje telo odpoveď z konektor alebo servis.

Napríklad zvážte nasledujúci formulár ako vlastnosť OnSelect ovládacieho prvku Tlačidlo:

Set( a, 1/0 )

A tento vzorec na vlastnosti OnSelect druhého ovládacieho prvku Tlačidlo:

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

Vyššie uvedený ukážkový vzorec by zobrazil nasledujúci banner, ak sú postupne aktivované dve tlačidlá:

Ovládací prvok tlačidla je aktivovaný a zobrazuje upozornenie prostredníctvom funkcie Upozorniť.

Zvyčajne sa vyskytne iba jedna chyba, s ktorou FirstError dokáže dostatočne pracovať. Existujú však scenáre, v ktorých sa môže vrátiť viacero chýb. Napríklad pri použití operátora reťazenia vzorcov alebo súbežnej funkcie. Aj v týchto situáciách môže nahlásenie FirstError stačiť na odhalenie problému namiesto preťaženia používateľa viacerými chybami. Ak stále máte požiadavku pracovať s každou chybou samostatne, môžete použiť tabuľku AllErrors.

IsError

Funkcia IsError testuje chybovú hodnotu.

Vrátená hodnota je logická hodnota pravda alebo nepravda.

Použitie IsError zabraňuje ďalšiemu spracovaniu chyby.

IsBlankOrError

Funkcia IsBlankOrError testuje buď prázdnu hodnotu, alebo chybovú hodnotu, a je ekvivalentom hodnoty Or( IsBlank( X ), IsError( X ) ).

Pri povoľovaní spracovania chýb v existujúcich aplikáciách zvážte nahradenie funkcie IsBlank funkciou , IsBlankOrError aby ste zachovali správanie existujúcej aplikácie. Pred pridaním spracovania chýb bola prázdna hodnota použitá na reprezentáciu nulových hodnôt z databáz aj chybových hodnôt. Error spracovanie odchodov týchto dvoch interpretácií prázdnych , čo by mohlo zmeniť správanie existujúcich aplikácií, ktoré naďalej používajú funkciu IsBlank.

Vrátená hodnota je booleovská pravda alebo nepravda.

Použitie IsBlankOrError zabraňuje ďalšiemu spracovaniu chyby.

Pomocou tejto Error funkcie môžete vytvoriť a nahlásiť vlastnú chybu. Môžete mať napríklad logiku na určenie, či je daná hodnota platná pre váš kontext alebo nie – niečo, čo sa automaticky nekontroluje v prípade problému. Pomocou funkcií Kind a Message môžete vytvoriť a vrátiť vlastnú chybu pomocou IfError funkcií Kind a Message.

V kontexte IfErrorfunkcie použite Error funkciu na presunie alebo odovzdanie chyby. Vaša logika môže napríklad rozhodnúť, že v IfError niektorých prípadoch sa chyba dá bezpečne ignorovať, ale v iných prípadoch je dôležité chyby odosielať prostredníctvom. V rámci IfError funkcie App.OnError alebo použite metóduError ( FirstError ) a prejdite chybou.

Funkcii Error tiež možno odovzdať tabuľku chýb, ako sa nachádza v tabuľke AllErrors . Pomocou Error( AllErrors ) zmeňte všetky chyby a nielen prvú.

Prázdny záznam alebo prázdna tabuľka, ktorá sa odovzdáva, Error nemá za následok žiadnu chybu.

Syntax

Error( ErrorRecord )
Error( ErrorTable )

  • ErrorRecord – povinné. Error záznam informácií vrátane polí Kind (Druh),Message (Správa) a ďalších polí. Vyžaduje sa druh . FirstError je možné odovzdať priamo.
  • ErrorTable – povinné. Tabuľka záznamov s informáciami o chybách. AllErrors je možné odovzdať priamo.

IfError( Value1, Replacement1 [, Value2, Replacement2, ... [, DefaultResult ] ] )

  • Hodnoty – povinné. Vzorec alebo vzorce, v ktorých sa má otestovať, či neobsahujú chybu.
  • Náhrady – povinné. Vzorce na vyhodnotenie a hodnoty na vrátenie, ak zodpovedajúce argumenty Value vrátili chybu.
  • DefaultResult – Voliteľné. Vzorce na vyhodnotenie, či vzorec nenájde žiadne chyby.

IsError( Hodnota )
IsBlankOrError( Hodnota )

  • Hodnota – povinné. Vzorec na testovanie.

Príklady

Jednoduchý IfError

Vzorec Description Výsledok
IfError( 1, 2 ) Prvý argument nie je chyba. Funkcia nemá žiadne ďalšie chyby na kontrolu a žiadnu predvolenú návratovú hodnotu. Funkcia vráti posledný vyhodnotený argument Value. 1
IfError( 1/0, 2 ) Prvý argument vráti chybovú hodnotu (z dôvodu delenia nulou). Funkcia vyhodnotí druhý argument a vráti ho ako výsledok. 2
IfError( 10, 20, 30 ) Prvý argument nie je chyba. Funkcia nemá žiadne ďalšie chyby na kontrolu, má však predvolenú návratovú hodnotu. Funkcia vráti argument DefaultResult. 30
IfError( 10, 11, 20, 21, 300 ) Prvý argument 10 nie je chybou, takže funkcia nehodnotí zodpovedajúcu náhradu tohto argumentu 11. Tretí argument 20 nie je tiež chybou, takže funkcia nehodnotí zodpovedajúcu náhradu tohto argumentu 21. Piaty argument 300 nemá žiadnu zodpovedajúcu náhradu a je predvoleným výsledkom. Funkcia vráti tento výsledok, pretože vzorec neobsahuje žiadne chyby. 300
IfError( 1/0; Notify( "Vyskytol sa interný problém" ) ) Prvý argument vráti chybovú hodnotu (z dôvodu delenia nulou). Funkcia vyhodnotí druhý argument a zobrazí používateľovi hlásenie. Vrátená hodnota IfError je vrátená hodnota funkcie Notify, ktorá sa vynúti na rovnaký typ ako prvý argument na IfError hodnotu (číslo). 1

Jednoduchý IsError

Vzorec Description Výsledok
IsError( 1 ) Argument nie je chyba. falošné
IsError( Prázdne() ) Argument je prázdny, ale nejde o chybu. falošné
IsError( 1/0 ) Argument je chyba. pravda
If( IsError( 1/0 ), Notify( "Vyskytol sa interný problém" ) ) Argument na IsError vrátenie chybovej hodnoty (z dôvodu delenia nulou). Táto funkcia sa vráti pravda, čo spôsobí, že Ak zobrazí správu používateľovi s funkciou Notify. Vrátená hodnota funkcie If je vrátenou hodnotou funkcie Notify, ktorá sa prevedie na rovnaký typ ako prvý argument funkcie If (logická hodnota). pravda

Jednoduchý IsBlankOrError

Vzorec Description Výsledok
IsBlankOrError( 1 ) Argument nie je chyba ani prázdny. falošné
IsBlankOrError( Prázdne() ) Argument je prázdny. pravda
IsBlankOrError( 1/0 ) Argument je chyba. pravda

Jednoduchý Error

V tomto príklade sú dátumy overené vo vzťahu k sebe navzájom, čo vedie k chybe, ak sa vyskytne problém.

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

V tomto príklade môžu niektoré chyby prejsť, zatiaľ čo iné sú potlačené a nahradené hodnotou. V prvom prípade b je v chybovom stave, pretože Hodnota funkcia má neplatný argument. Pretože je to neočakávané zapisovateľom vzorcov, prechádza to, aby to používateľ videl. V druhom prípade s rovnakým vzorcom b má hodnotu 0, výsledkom čoho je delenie nulou. V tomto prípade môže zapisovateľ vzorcov vedieť, že je to prijateľné pre túto logiku, potlačí chybu (nezobrazí sa žiadny banner) a namiesto toho vráti -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

Tabuľku AllErrors možno filtrovať ako akúkoľvek inú tabuľku. Pri použití s funkciou Error sa môžu odstrániť očakávané chyby a zostávajúce chyby sa zachovajú a ohlásia. Ak by sme napríklad vedeli, že delenie nulou nebude v konkrétnom kontexte problémom, tieto chyby by sa dali odfiltrovať a všetky ostatné chyby zostali nedotknuté podľa nasledujúceho vzorca:

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

Podrobne

  1. Pridajte ovládací prvok Vstup textu a nazvite ho TextInput1, ak sa už tak predvolene nenazýva.

  2. Pridajte ovládací prvok Označenie a nazvite ho Label1, ak sa už tak predvolene nenazýva.

  3. Nastavte vzorec pre vlastnosť Text prvku Label1 na:

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

    Label1 zobrazuje hodnotu 1234 pretože toto je platný vstup do funkcie Value.

  5. V TextInput1 zadajte ToInfinity.

    Label1 zobrazuje hodnotu -1 pretože to nie je platný vstup do funkcie Value. Ak by ste nezabalili funkciu Value do , IfErroroznačenie by nezoblolo žiadnu hodnotu, pretože chybná hodnota sa považuje za prázdnu.

Pozrite si tiež

Odkaz na vzorec pre Power Apps