Funkcije Error, IfError, IsError, IsBlankOrError Power Apps

[Ta članek je del predizdajne dokumentacije in se lahko spremeni.]

Zazna napake in zagotovi alternativno vrednost ali ukrepa. Ustvarite napako po meri ali pojdite skozi napako.

Opomba

IfError

Funkcija IfError preskuša vrednosti, dokler ne najde napake. Če funkcija odkrije napako, ovrednoti in vrne pripadajočo nadomestno vrednost in ustavi nadaljnje vrednotenje. Privzeto vrednost je mogoče dodeliti tudi, ko ni najdenih napak. Struktura funkcije IfError je podobna strukturi funkcije If: funkcija IfError preverja, ali obstajajo napake, medtem ko funkcija If preverja, ali obstaja true.

Uporabite funkcijo IfError za zamenjavo napake z veljavno vrednostjo, da se lahko nadaljnji izračuni nadaljujejo. Na primer, uporabite to funkcijo, če bi lahko z uporabniškim vnosom nastalo deljenje z nič:

IfError( 1/x, 0 )

Ta formula vrne 0, če je vrednost za x nič, saj z 1/x nastane napaka. Če x ni nič, potem je vrnjeno 1/x.

Ustavitev nadaljnje obdelave

Pri veriženju formul v formulah vedenja, kot je:

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

Za drugo funkcijo Patch za DS2 bo izveden poskus, tudi če funkcija Patch za DS1 ne uspe. Obseg napake je omejen na vsako formulo, ki je verižena.

Uporabite funkcijo IfError za izvedbo dejanja in nadaljuje z obdelavo samo, če je bilo dejanje uspešno. Uporaba funkcije IfError v tem primeru:

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

Če ima funkcija Patch za DS1 težavo, se izvede prva možnost Notify. Nadaljnja obdelava se ne izvede, niti druga funkcija Patch za DS2. Če prva funkcija Patch uspe, se druga funkcija Patch izvede.

Če je naveden, je izbirni argument DefaultResult vrnjen, če ni odkritih napak. Brez tega argumenta je vrnjen zadnji argument Value.

Če nadgradimo zadnji primer, je mogoče preveriti vrnjeno vrednost iz funkcije IfError, da se ugotovi, ali so se pojavile težave:

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

Združljivost tipov

Funkcija IfError bo vrnila vrednost enega od svojih argumentov. Tipi vseh vrednosti, ki jih lahko vrne funkcija IfError, morajo biti združljivi.

V zadnjem primeru funkcija Patch vrne zapis, ki ni združljiv z logičnimi vrednostmi, uporabljanimi za formule Replacement ali možnost DefaultResult. Kar je v redu, saj ni situacije, v kateri bi bila vrnjena vrednost iz teh priklicev funkcije Patch vrnjena s funkcijo IfError.

Opomba

Med potekom vedenja za spremembo morajo biti vsi tipi argumentov za funkcijo IfError trenutno združljivi.

V enostavnem primeru, opisanem prej:

IfError( 1/x, 0 )

Vrsti 1/x in 0 sta združljivi, saj obe predstavljata številki. Če nista, bo drugi argument prisiljen v ujemanje s tipom prvega argumenta.

Excel bo prikazal #DIV/0!, ko pride do deljenja z nič.

Raje razmislite o funkciji IfError z naslednjim:

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

Zgornja formula ne bo delovala. Besedilni niz "#DIV/0!" bo prisiljen v tip prvega argumenta v funkcijo IfError, ki je številka. Rezultat funkcije IfError bo še ena napaka, saj besedilnega niza ni mogoče prisiliti. Kot popravek pretvorite prvi argument v besedilni niz, tako da funkcija IfError vedno vrne besedilni niz.

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

Kot je vidno zgoraj, lahko funkcija IfError vrne napako, če je Replacement ali DefaultResult napaka.

FirstError / AllErrors

V nadomestnih formulah so informacije o najdenih napakah na voljo prek Prva napaka zapis in Vse napake mizo. Vse napake je tabela zapisov informacij o napakah z Prva napaka je bližnjica do prvega zapisa te tabele. Prva napaka bo vedno vrnil isto vrednost kot Prvi (vse napake).

Zapisi o napakah vključujejo:

Polje Vnesi Description
Vrsta ErrorKind enum (številka) Kategorija napake.
Sporočilo Besedilni niz Sporočilo o napaki, primerno za prikaz končnemu uporabniku.
Vir Besedilni niz Lokacija, kjer je nastala napaka, uporabljeno za poročanje. Na primer, za formulo, vezano na kontrolno lastnost, bo to v obliki ControlName.PropertyName.
Opazovano Besedilni niz Lokacija, kjer se uporabniku prikaže napaka, ki se uporablja za poročanje. Na primer, za formulo, vezano na kontrolno lastnost, bo to v obliki ControlName.PropertyName.
Podrobnosti Zapis Podrobnosti o napaki. Trenutno so podane podrobnosti samo za omrežne napake. Ta zapis vključuje HttpStatusCode ki vsebuje kodo stanja HTTP in HttpResponse ki vsebuje telo odgovora priključka ali storitve.

Na primer, glejte naslednjo formulo kot lastnost OnSelect kontrolnika Button:

Set( a, 1/0 )

In to formulo v lastnosti OnSelect za kontrolnik za drugi Gumb:

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

Ko sta gumba aktivirana eden za drugim, zgornji primer formule prikaže naslednjo pasico.

Kontrolnik »Button« aktiviran, prikazuje obvestilo iz funkcije »Notify«.

Običajno bo to samo ena napaka Prva napaka lahko dovolj dela z. Vendar pa obstajajo scenariji, ko se lahko vrne več napak. Na primer, ko uporabljate a Operator veriženja formule ali Sočasno funkcijo. Tudi v teh situacijah poročanje Prva napaka morda dovolj, da odkrijete težavo, namesto da bi uporabnika preobremenili z več napakami. Če še vedno potrebujete delo z vsako napako posebej, lahko uporabite Vse napake mizo.

IsError

Funkcija IsError preveri, ali obstaja vrednost napake.

Vrnjena vrednost je logična vrednost true ali false.

Z uporabo funkcije IsError se prepreči nadaljnja obdelava napake.

IsBlankOrError

Funkcija IsBlankOrError preizkusi funkcijo za prazno vrednost ali vrednost napake in je enakovredna funkciji Or( IsBlank( X ), IsError( X ) ).

Ko omogočate obravnavanje napak za obstoječe aplikacije, razmislite o zamenjavi funkcije IsBlank s funkcijo IsBlankOrError, da ohranite obstoječe vedenje aplikacije. Pred dodajanjem obravnave napak je bila prazna vrednost uporabljena za predstavitev tako ničelnih vrednosti iz baz podatkov kot vrednosti napak. Obravnavanje napak ločuje ti dve interpretaciji prazne vrednosti, kar bi lahko spremenilo vedenje obstoječih aplikacij, ki še naprej uporabljajo funkcijo IsBlank.

Vrnjena vrednost je logična vrednost true ali false.

Funkcija IsBlankOrError bo preprečila nadaljnjo obdelavo napake.

Napaka

Uporabi Napaka funkcija za ustvarjanje in poročanje o napaki po meri. Na primer, morda imate logiko, da ugotovite, ali je katera koli vrednost veljavna za vaš kontekst ali ne— nekaj ni samodejno preverjeno za težavo. Lahko ustvarite in vrnete lastno napako, skupaj z prijazen in Sporočilo, z uporabo istega zapisa, opisanega zgoraj za IfError funkcijo.

V kontekstu IfError, uporabi Napaka funkcijo za vnovično vrnitev ali prehod skozi napako. Na primer vaša logika IfError se lahko odloči, da je v nekaterih primerih napako mogoče varno prezreti, v drugih primerih pa je napako pomembno poslati. Znotraj IfError oz App.OnError, uporaba Napaka ( FirstError ) preiti skozi napako.

The Napaka funkciji lahko posredujete tudi tabelo napak, kot bi jo našli v Vse napake mizo. Uporaba Napaka (AllErrors) vrniti vse napake in ne samo prve.

A prazno zapis ali prazna tabela je bila posredovana Napaka ne povzroči napake.

Sintaksa

Napaka (ErrorRecord)
Napaka (Tabela napak)

  • ErrorRecord – Obvezno. Zapis informacij o napakah, vključno z prijazen, ·, in druga polja. prijazen je potrebno. Prva napaka se lahko prenese neposredno.
  • Tabela napak – Obvezno. Tabela zapisov informacij o napakah. Vse napake se lahko prenese neposredno.

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

  • Vrednost(i) – obvezno. Formule, za katere se preveri, ali obstaja vrednost napake.
  • Replacement(s) – obvezno. Formule za ovrednotenje in vrednosti za vrnitev, če so ujemajoči se argumenti Value vrnili napako.
  • DefaultResult – izbirno. Formule za ovrednotenje, če formula ne najde nobenih napak.

IsError( Value )
IsBlankOrError( Value )

  • Value – obvezno. Formula za preskušanje.

Primeri

Enostavna funkcija IfError

Formula Opis Rezultat
IfError( 1, 2 ) Prvi argument ni napaka. Funkcija nima drugih napak za preverjanje in ne privzete vrnjene vrednosti. Funkcija vrne zadnji ovrednoten argument value. 1
IfError( 1/0, 2 ) Prvi argument vrne vrednost napake (zaradi deljenja z nič). Funkcija ovrednoti drugi argument in ga vrne kot rezultat. 2
IfError( 10, 20, 30 ) Prvi argument ni napaka. Funkcija nima drugih napak za preverjanje, toda ima privzeto vrnjeno vrednost. Funkcija vrne argument DefaultResult. 30
IfError( 10, 11, 20, 21, 300 ) Prvi argument 10 ni napaka, zato funkcija ne ovrednoti pripadajoče zamenjave 11 tega argumenta. Tretji argument 20 prav tako ni napaka, zato funkcija ne ovrednoti pripadajoče zamenjave 21 tega argumenta. Peti argument 300 nima pripadajoče zamenjave in je privzeti rezultat. Funkcija vrne ta rezultat, ker formula ne vsebuje napak. 300
IfError( 1/0, Notify( "There was an internal problem" ) ) Prvi argument vrne vrednost napake (zaradi deljenja z nič). Funkcija ovrednoti drugi argument in prikaže sporočilo uporabniku. Vrnjena vrednost funkcije IfError je vrnjena vrednost funkcije Notify, prisiljena na isti tip kot prvi argument na funkcijo IfError (številka). 1

Enostavna funkcija IsError

Formula Opis Rezultat
IsError( 1 ) Argument ni napaka. neresnično
IsError( Blank() ) Argument je prazen, vendar ne napaka. neresnično
IsError( 1/0 ) Argument je napaka. resnično
If( IsError( 1/0 ), Notify( "There was an internal problem" ) ) Argument na IsError vrne vrednost napake (zaradi deljenja z nič). Ta funkcija vrne vrednost true, ki povzroči, da funkcija If uporabniku prikaže sporočilo s funkcijo Notify. Vrnjena vrednost funkcije If je vrnjena vrednost funkcije Notify, prisiljena na isti tip kot prvi argument na funkcijo If (logična vrednost). resnično

Preprosta funkcija IsBlankOrError

Formula Opis Rezultat
IsBlankOrError( 1 ) Argument je ni napaka ali prazen. neresnično
IsBlankOrError( Prazno()) Argument je prazen. resnično
IsBlankOrError( 1/0 ) Argument je napaka. resnično

Preprosta napaka

V tem primeru so datumi potrjeni drug glede na drugega, kar povzroči napako, če pride do težave.

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

V tem primeru je nekaterim napakam dovoljeno prehod, medtem ko so druge potisnjene in zamenjane z vrednostjo. V prvem primeru, b bo v stanju napake, ker vrednost funkcija ima neveljaven argument. Ker je to nepričakovano s strani pisca formule, se prenese skozi, tako da ga bo uporabnik videl. V drugem primeru z isto formulo, b bo imela vrednost 0, kar bo povzročilo deljenje z nič. V tem primeru lahko pisec formule ve, da je to sprejemljivo za to logiko, prepreči napako (ni prikazana pasica) in namesto tega vrne -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

The Vse napake tabelo je mogoče filtrirati kot katero koli drugo tabelo. Uporablja se z Napaka funkcije, je mogoče pričakovane napake odstraniti, preostale napake pa ohraniti in prijaviti. Na primer, če bi vedeli, da deljenje z nič ne bo težava v določenem kontekstu, bi lahko te napake filtrirali in pustili vse druge napake nedotaknjene z naslednjo formulo:

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

Korak za korakom

  1. Dodajte kontrolnik Text input in ga poimenujte TextInput1, če privzeto nima tega imena.

  2. Dodajte kontrolnik Label in ga poimenujte Label1, če privzeto nima imena.

  3. Nastavite formulo za lastnost Besedilo za Label1 na:

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

    Label1 bo prikazala vrednost 1234, ker je to veljaven vnos za funkcijo »Value«.

  5. V TextInput1 vnesite ToInfinity.

    Label1 bo prikazala vrednost -1, ker je to ni veljaven vnos za funkcijo »Value«. Brez preloma besedila za funkcijo »Value« s funkcijo »IfError« oznaka ne bi prikazovala vrednosti, saj je vrednost napake obravnavana kot prazno.

Glejte tudi

Sklic na formulo za Power Apps

Opomba

Ali nam lahko poveste, kateri je vaš prednostni jezik za dokumentacijo? Izpolnite kratko anketo. (upoštevajte, da je v angleščini)

Z anketo boste porabili približno sedem minut. Ne zbiramo nobenih osebnih podatkov (izjava o zasebnosti).