Deli z drugimi prek


Error, IfError, , IsErrorfunkcije IsBlankOrError

Funkcije Velja za
Error
IfError
IsError
Canvas apps Copilot Studio Desktop flows Dataverse formula columns Model-driven apps Power Platform CLI Dataverse functions Power Pages
IsBlankOrError Canvas apps Copilot Studio Desktop flows Model-driven apps Power Platform CLI Dataverse functions Power Pages

Zazna napake in zagotovi alternativno vrednost ali ukrepa. Ustvari napako po meri ali posreduje napako.

opomba,

Če je aplikacija onemogočila funkcijo upravljanja napak na ravni formule pod Nastavitve>Posodobitve> Upokojen, te funkcije ne bodo delovale pravilno.

IfError

Funkcija IfError preskusi 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 je podobna IfError strukturi funkcije If : preskusi napake IfError , medtem ko funkcija If preskusi vrednost true.

Uporabite IfError , če želite napako zamenjati z veljavno vrednostjo, tako 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 x nič, ker 1/x proizvede napako. Č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 IfError za izvajanje dejanja in nadaljevanje obdelave le, če je bilo dejanje uspešno. Uporaba IfError za ta primer:

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.

Na podlagi zadnjega primera je mogoče preveriti vrnjeno IfError vrednost, da ugotovite, ali je prišlo do težav:

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

Združljivost tipov

IfError vrne vrednost enega od svojih argumentov. Vrste vseh vrednosti, ki jih bo morda vrnil, morajo IfError biti združljive.

V zadnjem primeru Patch vrne zapis, ki ni združljiv z logičnimi vrednostmi, uporabljenimi za formule Nadomestne ali DefaultResult. Kar je v redu, saj ni situacije, v kateri bi bila vrnjena vrednost iz teh popravkov klici, ki jih IfError.

opomba,

Medtem ko se postopek za spremembo izvaja, morajo biti vrste vseh argumentov IfError trenutno združljive.

V enostavnem primeru, opisanem prej:

IfError( 1/x, 0 )

Vrsti 1/x in 0 sta združljivi, saj obe predstavljata številki. Če niso, se drugi argument prisili, da se ujema z vrsto prvega argumenta.

Excel prikaže #DIV/0! ko pride do deljenja z ničlo.

Namesto IfError tega razmislite o tem:

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

Zgornja formula ne bo delovala. Besedilni "#DIV/0!" niz je vsiljena vrsti prvega argumenta IfErrorv , ki je število. Rezultat je še IfError ena napaka, ker besedilnega niza ni mogoče vsiliti. Kot popravek pretvorite prvi argument v besedilni niz, tako da vedno IfError vrne besedilni niz:

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

Kot je prikazano zgoraj, IfError lahko vrne napako, če je napaka » Zamenjava« ali »DefaultResult «.

FirstError/AllErrors

Zapis FirstError in tabela AllErrors v nadomestnih formulah vsebujeta informacije o najdenih napakah. AllErrors je tabela zapisov z informacijami o napakah, pri čemer FirstError je bližnjica do prvega zapisa te tabele. FirstError vedno vrne isto vrednost kot First( AllErrors ).

Error zapisi vključujejo:

Polje Vnesi Description
Prijazen 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, uporabljena za poročanje. Na primer, za formulo, vezano na lastnost kontrolnika, je ta vrednost v obliki ControlName.PropertyName.
Opazovano Besedilni niz Mesto, kjer se je napaka prikazala uporabniku, uporabljeno za poročanje. Na primer, za formulo, vezano na lastnost kontrolnika, je ta vrednost v obliki ControlName.PropertyName.
Podrobnosti Zapis Podrobnosti o napaki. Trenutno so na voljo podrobnosti le za napake omrežja. Ta zapis vključuje HttpStatusCode ki vsebuje statusno kodo HTTP in HttpResponse ki vsebuje telo odgovor iz priključek ali storitev.

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 samo ena napaka, s katero FirstError lahko zadosti deluje. Vendar obstajajo scenariji, kjer je lahko vrnjenih več napak. Na primer, ko uporabljate operator veriženja formule ali funkcijo Concurrent. Tudi v teh situacijah je lahko poročanje FirstError dovolj, da razkrije težavo, namesto da uporabnika preobremeni z več napakami. Če morate še vedno delati z vsako napako posebej, lahko uporabite tabelo AllErrors.

IsError

Funkcija IsError preskusi napako z vrednostjo.

Vrnjena vrednost je logična vrednost true ali false.

Uporaba IsError prepreči nadaljnjo obdelavo napake.

IsBlankOrError

Funkcija IsBlankOrError preskusi prazno vrednost ali vrednost napake in je enakovredna Or( IsBlank( X ), IsError( X ) ).

Ko omogočite obravnavanje napak za obstoječe aplikacije, razmislite o zamenjavi funkcije IsBlank zIsBlankOrError, da ohranite delovanje obstoječe aplikacije. Pred dodajanjem obravnavanja napak je bila uporabljena prazna vrednost za predstavitev ničelnih vrednosti iz baz podatkov in vrednosti napak. Error obravnava ti dve interpretaciji praznega polja , kar lahko spremeni delovanje obstoječih aplikacij, ki še naprej uporabljajo IsBlank.

Vrnjena vrednost je logična vrednost true ali false.

Uporaba IsBlankOrError prepreči nadaljnjo obdelavo napake.

Uporabite funkcijo Error za ustvarjanje in poročanje o napaki po meri. Na primer, morda imate logiko za ugotavljanje, ali je katera koli dana vrednost veljavna za vaš kontekst ali ne – nekaj, kar ni samodejno preverjeno za težavo. Ustvarite in vrnete lahko svojo napako, vključno z vrsticami »Vrsta« in »Sporočilo«, pri tem pa uporabite isti zapis, ki je opisan zgoraj za IfError funkcijo.

V kontekstu uporabite IfErrorfunkcijo za Error vnovično rast ali prehod napake. Vaša logika se lahko IfError na primer odloči, da lahko v nekaterih primerih napako varno prezrete, v drugih primerih pa je napaka pomembna za pošiljanje. Znotraj IfError ali App.OnError uporabite Error( FirstError ) za prehod skozi napako.

Funkcijo Error lahko podate tudi v tabelo napak, kot bi jo našli v tabeli AllErrors . Uporabite Error( AllErrors ), da znova prikažete vse napake in ne le prve.

Prazen zapis ali prazna tabela, posredovana rezultatom Error brez napake.

Sintaksa

Error( NapakaZapis )
Error( Tabela z napakami )

  • ErrorRecord – Zahtevano. Error vključno s polji »Vrsta«, »Sporočilo« in drugimi polji. Vrsta je obvezna. FirstError je mogoče posredovati neposredno.
  • ErrorTable – Zahtevano. Tabela zapisov z informacijami o napakah. AllErrors je mogoče posredovati neposredno.

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

  • Vrednosti – obvezno. Formule, za katere se preveri, ali obstaja vrednost napake.
  • Zamenjave – obvezne. Formule za ovrednotenje in vrednosti za vrnitev, če so ujemajoči se argumenti Value vrnili napako.
  • Privzeti rezultat – Izbirno. Formule za ovrednotenje, če formula ne najde nobenih napak.

IsError( Vrednost )
IsBlankOrError( Vrednost )

  • Vrednost – obvezno. Formula za preskušanje.

Primeri

Preprost IfError

Formula Description 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( "Prišlo je do notranje težave" ) ) Prvi argument vrne vrednost napake (zaradi deljenja z nič). Funkcija ovrednoti drugi argument in prikaže sporočilo uporabniku. Vrnjena vrednost je IfError vrnjena vrednost funkcije Notify, ki je vsiljena isti vrsti kot prvi argument za IfError (število). 1

Preprost IsError

Formula Description Rezultat
IsError( 1 ) Argument ni napaka. lažno
IsError(Prazno() ) Argument je prazen, vendar ne napaka. lažno
IsError( 1/0 ) Argument je napaka. res
If( IsError( 1/0 ), Notify( "Prišlo je do notranje težave" ) ) Argument, ki vrne IsError 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). res

Preprost IsBlankOrError

Formula Description Rezultat
IsBlankOrError( 1 ) Argument je ni napaka ali prazen. lažno
IsBlankOrError(Prazno() ) Argument je prazen. res
IsBlankOrError( 1/0 ) Argument je napaka. res

Preprost Error

V tem primeru so datumi medsebojno preverjani, 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 dovoljeno prehajanje nekaterih napak, druge pa so potlačene in nadomeščene z vrednostjo. V prvem primeru, b je v stanju napake, ker Vrednost funkcija ima neveljaven argument. Ker je pisec formule tega nepričakovan, se posreduje, tako da ga uporabnik vidi. V drugem primeru z isto formulo b ima vrednost 0, kar povzroči deljenje z nič. V tem primeru pisec formule morda ve, da je to sprejemljivo za to logiko, ki prepreči napako (ni prikazane pasice) 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

Tabelo AllErrors je mogoče filtrirati kot vsako drugo tabelo. S funkcijo se Error lahko odstranijo pričakovane napake, preostale napake pa se ohranijo in so sporočene. Na primer, če bi vedeli, da deljenje z ničlo ne bo predstavljalo težave v določenem kontekstu, bi lahko te napake izločili, vse druge napake pa pustili 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 prikazuje vrednost 1234 ker je to veljaven vnos v funkcijo Vrednost.

  5. V TextInput1 vnesite ToInfinity.

    Label1 prikazuje vrednost -1 ker to ni veljaven vnos v funkcijo Vrednost. Brez oblivanja funkcije »Vrednost« z IfErroroznako ne bo prikazana nobena vrednost, saj je vrednost napake obravnavana kot prazna.

Glejte tudi

Referenca formule za Power Apps