Megosztás:


Error, IfError, IsErrorIsBlankOrError függvények

Functions A következőkre vonatkozik:
Error
IfError
IsError
Vászonalapú alkalmazások Copilot Studio Desktop folyamatok Dataverse képletoszlopok Modellalapú alkalmazások Power Platform CLI Dataverse-függvények Power Pages
IsBlankOrError Vászonalapú alkalmazások Copilot Studio Desktop folyamatok Modellalapú alkalmazások Power Platform CLI Dataverse függvények Power Pages

Érzékeli a hibákat, és más értéket kínál fel, vagy műveletet hajt végre. Egyéni hibát hoz létre vagy átad egy hibát.

Feljegyzés

Ha egy alkalmazás letiltotta a képletszintű hibakezelési funkciót a Gépház frissítései kivezetve>>, akkor ezek afunkciók nem fognak megfelelően működni.

IfError

A IfError függvény addig teszteli az értékeket, amíg hibát nem talál. Ha a függvény hibát talál, kiértékeli, és visszaadja a megfelelő helyettesítő értéket, és leáll a további kiértékelés. Alapértelmezett érték is megadható arra az esetre, ha nem találhatók hibák. A szerkezet hasonlít IfError a Ha függvényre: IfError a hibák tesztelésére, míg a Haigazra.

A hiba egy érvényes értékre való lecserélésére használható IfError , hogy az alsóbb rétegbeli számítások folytatódjanak. Ezt a függvényt például akkor érdemes használni, ha a felhasználó által megadott adatok nullával való osztást eredményeznének:

IfError( 1/x, 0 )

Ez a képlet akkor ad vissza értéket 0 , ha értéke nulla x , és 1/x hibát eredményez. Ha az x nem nulla, akkor az eredmény 1/x.

A további feldolgozás leállítása

Ha összeláncol képleteket műveleti képletekben, például:

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

A második Patch függvény DS2 értékét akkor is megkísérli megadni a rendszer, ha a Patch függvénynél nem sikerül DS1 értéket használni. A hiba hatóköre az összeláncolt képletekre korlátozódik.

IfError Műveletet hajthat végre, és csak akkor folytathatja a feldolgozást, ha a művelet sikeres volt. IfError Alkalmazás erre a példára:

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

Ha a DS1 függvénye problémába ütközik, a rendszer az első Notify utasítást hajtja végre. További feldolgozás nem történik; ez a második DS2 függvényét is érinti. Ha az első Patch sikeres, a második Patch végrehajtására is sor kerül.

Ha meg van adva az opcionális AlapértelmezettEredmény argumentum, a rendszer azt adja vissza, ha nem talál hibát. Az argumentum nélkül az utolsó Érték argumentum lesz visszaadva.

Az utolsó példára építve a visszatérési érték IfError ellenőrizhető annak megállapításához, hogy voltak-e problémák:

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

Típus-kompatibilitás

IfError az egyik argumentum értékét adja vissza. Az esetlegesen visszaadott IfError értékek típusainak kompatibilisnek kell lenniük.

Az utolsó példában a Patch egy olyan rekordot ad vissza, amely nem kompatibilis a csereképletekhez vagy aDefaultResult képlethez használt logikai értékekkel. Ami rendben van, mivel nincs olyan helyzet, amelyben a javításhívások visszatérési értékét a rendszer visszaadná IfError.

Feljegyzés

Bár a változás folyamatban lévő viselkedése, az összes argumentum típusának kompatibilisnek IfError kell lennie.

A korábban ismertetett egyszerű példában:

IfError( 1/x, 0 )

Az 1/x és 0 típusok és kompatibilisek voltak, mivel számok. Ha nem, akkor a második argumentum kénytelen megegyezni az első argumentum típusával.

Az Excel megjeleníti #DIV/0! ha nullával oszlik meg.

Fontolja meg IfError inkább a következőket:

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

A fenti képlet nem fog működni. A szöveges sztring "#DIV/0!" az első argumentum IfErrortípusára van kényszerítve, amely egy szám. Az eredmény IfError egy újabb hiba, mivel a szöveges sztring nem kényszeríthető. Javításként konvertálja az első argumentumot szöveges sztringgé, hogy IfError mindig szöveges sztringet adjon vissza:

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

A fentiekben látható módon hiba jelenhet meg, IfError ha a Csere vagy a DefaultResult hiba.

FirstError /AllError

A csere képletekben a FirstError rekord és az AllErrors tábla nyújt tájékoztatást a talált hibákról. Az AllErrors hibainformációs rekordok táblázata, amelyben a FirstError a tábla első rekordjára mutató parancsikon. A FirstError mindig ugyanazt az értéket adja vissza, mint a First( AllErrors ).

Error a rekordok közé tartoznak a következők:

Mező Típus Description
Fajta ErrorKind felsorolás (szám) A hiba kategóriája.
Üzenet Szöveges sztring A hibára vonatkozó üzenet, amely megjeleníthető a végfelhasználónak.
Forrás Szöveges sztring A hiba származási helye, jelentéskészítéskor használatos. Egy vezérlőelem-tulajdonsághoz kötött képlet esetében például ez az érték Vezérlőelemnév.Tulajdonságnév formátumú.
Megfigyelt Szöveges sztring Az a hely, ahol a hiba jelentkezett a felhasználónak, jelentéskészítéshez használt. Egy vezérlőelem-tulajdonsághoz kötött képlet esetében például ez az érték Vezérlőelemnév.Tulajdonságnév formátumú.
Részletek Rögzítés Részletek a hibáról. Jelenleg a részletek csak a hálózati hibákra vonatkoznak. Ez a rekord tartalmazza a HttpStatusCode kódot, amely tartalmazza a HTTP-állapotkódot, valamint a HttpResponse-t , amely az összekötő vagy szolgáltatás válasz törzsét tartalmazza.

A következő képlet például használható egy Gomb vezérlőelem OnSelect tulajdonságaként:

Set( a, 1/0 )

Adja hozzá ezt a képletet az OnSelect tulajdonsághoz a második Gomb vezérlőnél:

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

A fenti példaképlet a következő szalagcímet jeleníti meg, amikor a két gomb aktiválása egymás után történik:

A gomb vezérlőelem aktiválva, a Notify függvény értesítést jelenít meg.

Általában csak egy hiba lesz, amellyel a FirstError megfelelően működik. Vannak azonban olyan helyzetek, amikor több hiba is visszaadható. Például képletösszefűző operátor vagy a Concurrent függvény használatakor. Még ezekben a helyzetekben is elegendő lehet a FirstError jelentéskészítése a probléma feltárásához, így nem kell túlterhelni a felhasználót számos hibával. Ha továbbra is külön-külön kell dolgoznia az egyes hibákkal, használhatja az AllErrors táblát.

IsError

A IsError függvény hibaértéket tesztel.

A visszatérési érték true vagy false logikai érték.

A használat IsError megakadályozza a hiba további feldolgozását.

IsBlankOrError

A IsBlankOrError függvény egy üres vagy egy hibaértéket tesztel, és ennek megfelelője Or( IsBlank( X ), IsError( X ) ).

A meglévő alkalmazások hibakezelésének engedélyezésekor fontolja meg az IsBlankIsBlankOrError lecserélését a meglévő alkalmazás viselkedésének megőrzése érdekében. A hibakezelés hozzáadása előtt egy üres értéket használtak az adatbázisokból származó null értékek és a hibaértékek jelölésére. Error a kezelés elválasztja az üres két értelmezést, amelyek megváltoztathatják az IsBlankot továbbra is használó meglévő alkalmazások viselkedését.

A visszatérési érték egy logikai igaz vagy hamis érték.

A használat IsBlankOrError megakadályozza a hiba további feldolgozását.

Egyéni hiba létrehozása és jelentése a Error függvény használatával. Előfordulhat például, hogy van olyan logikája, amely meghatározza, hogy egy adott érték érvényes-e a környezete számára vagy sem – olyan dolog, amelyet nem ellenőriz a rendszer automatikusan problémát keresve. Létrehozhatja és visszaadhatja a saját, Kind és Message elemekkel kiegészített hibáját a függvény fent IfError ismertetett rekordjával.

A következő kontextusban IfErrorhasználja a Error függvényt egy hiba ismételt megismétlésére vagy átengedésére. Előfordulhat például, hogy a logika IfError úgy dönt, hogy bizonyos esetekben egy hiba biztonságosan figyelmen kívül hagyható, más esetekben azonban fontos a hiba elküldése. Az IfErrorApp.OnError vagy az App.OnError használatával Error(FirstError) átadhatja a hibát.

A Error függvény egy hibatáblát is átadhat, ahogyan az Az AllErrors táblában található. A (AllErrors) használatávalError minden hibát kijavíthat, és nem csak az elsőt.

Az üres rekord vagy üres tábla nem Error eredményez hibát.

Szintaxis

Error( ErrorRecord )
Error( ErrorTable )

  • ErrorRecord – Kötelező. Error adatrekord, beleértve a Kind, az Message és más mezőket. Kind szükséges. A FirstError közvetlenül átadható.
  • ErrorTable – Kötelező. Hibainformációkat tartalmazó rekordok táblája. Az AllErrors közvetlenül átadható.

IfError( Érték1, Csere1 [, Érték2, Csere2, ... [, DefaultResult ] ] )

  • Értékek – Kötelező. A képlet(ek), amelyben hibaértéket kell ellenőrizni.
  • Cserék – Kötelező. A kiértékelendő képletek és visszaadandó értékek abban az esetben, ha az Érték argumentumok egyeztetése hibát ad vissza.
  • DefaultResult – Nem kötelező. A kiértékelendő képletek, ha a képlet nem talál hibát.

IsError( Érték )
IsBlankOrError( Érték )

  • Érték – Kötelező. A tesztelendő képlet.

Példák

Egyszerű IfError

Képlet Description Eredmény
IfError( 1, 2 ) Az első argumentum nem hiba. A függvénynek nincs más ellenőrizendő hibája, és nincs alapértelmezett visszatérési érték. A függvény az utolsó kiértékelt érték argumentumot adja vissza. 1
IfError( 1/0, 2 ) Az első argumentum hibát ad vissza (a nullával való osztás miatt). A függvény kiértékeli a második argumentumot, és azt adja vissza eredményként. 2
IfError( 10, 20, 30 ) Az első argumentum nem hiba. A függvénynek nincs más ellenőrizendő hibája, de rendelkezik alapértelmezett visszatérési értékkel. A függvény az AlapértelmezettEredmény argumentumot adja vissza. 30
IfError( 10, 11, 20, 21, 300 ) Az első argumentum, 10, nem hiba, így a függvény nem értékeli ki, hogy az argumentum megfelelő csereértéke 11. A harmadik argumentum, 20, sem hiba, így a függvény nem értékeli ki, hogy az argumentum megfelelő csereértéke 21. Az ötödik argumentumnak (300) nincs megfelelő csereértéke; ez az alapértelmezett eredmény. A függvény ezt az eredményt adja vissza, mivel a képlet nem tartalmaz hibákat. 300
IfError( 1/0, Notify( "Volt egy belső probléma" ) ) Az első argumentum hibát ad vissza (a nullával való osztás miatt). A függvény kiértékeli a második argumentumot, és üzenetet jelenít meg a felhasználónak. A visszatérési érték a Notify visszatérési IfError értéke, amely az első argumentummal (számmal) megegyező típusra IfError van kényszerítve. 1

Egyszerű IsError

Képlet Description Eredmény
IsError( 1 ) Az argumentum nem hiba. téves
IsError( Üres() ) Az argumentum üres, de nem hiba. téves
IsError( 1/0 ) Az argumentum hiba. igaz
If( IsError( 1/0 ), Notify( "Volt egy belső probléma" ) ) A hibaértéket visszaadó IsError argumentum (a nullával való osztás miatt). Ez a függvény igaz értéket ad vissza, ami azt eredményezi, hogy az If függvény a Notify függvénnyel üzenetet jelenít meg a felhasználónak. Az If visszatérési értéke a Notify visszatéréséi értéke lesz, arra a típusra konvertálva, amilyen az If első argumentumáé (logikai érték). igaz

Egyszerű IsBlankOrError

Képlet Description Eredmény
IsBlankOrError( 1 ) Az argumentum nem hiba vagy üres. téves
IsBlankOrError( Üres() ) Az argumentum üres. igaz
IsBlankOrError( 1/0 ) Az argumentum hiba. igaz

Egyszerű Error

Ebben a példában a dátumok ellenőrzése egymáshoz képest történik, ami hibát eredményez, ha probléma merül fel.

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

Ebben a példában egyes hibák áthaladhatnak, míg mások el vannak rejtve, és egy értékkel vannak helyettesítve. Az első esetben a b hibaállapotban van, mert a Value függvény argumentuma érvénytelen. Mivel ezt a képletíró váratlanul éri el, a képletíró átadja, hogy a felhasználó láthassa. A második esetben ugyanazzal a képlettel,b értéke 0, ami nullával való osztást eredményez. Ebben az esetben a képlet írója tudja, hogy ez elfogadható ebben a logikában, így visszavonja a hibát (nem jelenít meg címsávot), és -1-et ad vissza.

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

Az AllErrors tábla szűrhető, mint bármelyik másik tábla. A függvényhez használva a Error várt hibák eltávolíthatók, és a fennmaradó hibák megmaradnak és jelenthetők. Például, ha tudjuk, hogy a nullával való osztás nem jelent problémát egy adott kontextusban, akkor ezeket a hibákat ki lehet szűrni, az összes többi hibát érintetlenül hagyva a következő képlettel:

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

Lépésről lépésre

  1. Adjon hozzá egy Szövegbevitel vezérlőt, és adja neki a TextInput1 nevet, ha alapértelmezés szerint nem ez a neve.

  2. Adjon hozzá egy Címke vezérlőt, és adja neki a Label1 nevet, ha alapértelmezés szerint nem ez a neve.

  3. A Label1Szöveg tulajdonságaként adja meg a következő képletet:

    IfError( Value( TextInput1.Text ), -1 )
    
  4. A TextInput1 mezőbe írja be az 1234 értéket.

    A Label1 az 1234 értéket jeleníti meg, mivel ez érvényes bemenet a Value függvényhez.

  5. A TextInput1 mezőbe írja be a Végtelenig értéket.

    A Label1 a value-1 értéket jeleníti meg, mivel ez nem érvényes bemenet a Value függvényhez. Az Érték függvény körbefuttatása IfErrornélkül a címke nem jelenít meg értéket, mivel a hibaérték üresként lesz kezelve.

Kapcsolódó információk

Képlethivatkozás a következőhöz: Power Apps