Jagamisviis:


Error, IfError, IsError, IsBlankOrError funktsioonid

Funktsioone Kehtib järgmiste puhul
Error
IfError
IsError
Lõuendirakendused Copilot Studio töölauavood Dataverse formula columns Mudelipõhised rakendused Power Platform CLI Dataverse functions Power Pages
IsBlankOrError Lõuendirakendused Copilot Studio töölauavood Mudelipõhised rakendused Power Platform CLI Dataverse funktsioonid Power Pages

Tuvastab tõrked ja pakub alternatiivset väärtust või võtab meetmeid. Looge kohandatud tõrge või läbige tõrge.

Märkus.

Kui rakendus on jaotises Sätete värskendused Aegunud> valemitaseme tõrkehalduse>funktsiooni keelanud, ei tööta need funktsioonid õigesti.

IfError

Funktsioon IfError testib väärtusi, kuni leiab vea. Kui funktsioon avastab tõrke, siis funktsioon arvutab ja tagastab vastava asendamise väärtuse ning peatab edasise hindamise. Vaikeväärtuse saab esitada ka juhul, kui vigu ei leita. Funktsiooni If struktuur sarnaneb if-funktsiooni struktuurigaIfError: IfError testib vigu, samal ajal kui If kontrollib tõest.

Kasutage seda IfError vea asendamiseks kehtiva väärtusega, et järgmise etapi arvutused saaksid jätkata. Kasutage seda funktsiooni näiteks juhul, kui kasutaja sisestus võib põhjustada nulliga jagamist.

IfError( 1/x, 0 )

See valem tagastab tulemuse 0 , kui väärtus x on null, nagu 1/x tekitab vea. Kui x pole null, siis tagastatakse 1/x.

Edasise töötlemise peatamine

Kui aheldatakse valemid kokku käitumise valemites, näiteks:

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

Teine funktsioon Patch väärtusele DS2 proovitakse ka siis, kui PatchDS1 ei õnnestu. Tõrke ulatus on piiratud iga aheldatud valemiga.

Sobib IfError toimingu tegemiseks ja töötlemise jätkamiseks ainult juhul, kui toiming õnnestus. Rakendage IfError sellele näitele:

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

Kui funktsioonil Patch väärtusel DS1 on probleem, siis käivitatakse esimene teavitamine. Edasist töötlemist ei toimu, sh teine Patch väärtusel DS2. Kui esimene Patch on edukas, siis teine Patch käivitub.

Kui see on saadaval tagastatakse valikuline DefaultResult argument juhul, kui tõrkeid ei avastata. Ilma selle argumendita viimane argument Value tagastatakse.

Võttes aluseks viimase näite, saab kontrollida tagastatava väärtuse IfError olemasolu, et teha kindlaks, kas esineb probleeme.

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

Tüübi ühilduvus

IfError tagastab ühe argumendi väärtuse. Kõigi tagastatavate IfError väärtuste tüübid peavad ühilduma.

Viimases näites tagastab paik kirje, mis ei ühildu loogikatega, mida kasutatakse asendusvalemite või vaiketulemuse puhul . Mis on hea, kuna pole olukorda, kus nende paikamiskutsete tagastusväärtus tagastataks IfError.

Märkus.

Kui muudatuse käitumine on pooleli, peavad kõigi argumentide tüübid praegu ühilduma IfError .

Eespool kirjeldatud lihtsas näites:

IfError( 1/x, 0 )

Tüübid 1/x ja 0 on mõlemad ühilduvad, sest mõlemad on numbrid. Kui see nii ei ole, on teine argument sunnitud vastama esimese argumendi tüübile.

Excel kuvab #DIV/0! kui toimub jagamine nulliga.

Kaaluge IfError hoopis järgmist.

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

Ülaltoodud valem ei tööta. Tekstistring "#DIV/0!" on seotud esimese argumendi IfErrortüübiga , milleks on arv. Tulem IfError on veel üks tõrge, kuna tekstistringi ei saa koos kasutada. Lahendusena teisendage esimene argument tekstistringiks, nii et IfError tagastatakse alati tekstistring:

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

Nagu eespool näha, võib tagastada tõrke, IfError kui tõrge on Asendamine või Vaikeresult .

Esimene tõrge/ Kõik tõrked

Asendusvalemite sees on tõrgete kohta leitud teave saadaval Esimese tõrke kirjes ja Kõikide tõrgete tabelis. AllErrors on tõrketeabe kirjete tabel, kus FirstError on selle tabeli esimese kirje otsetee. FirstError tagastab alati sama väärtuse, mis First( AllErrors).

Error kirjed on järgmised.

Väli Tüüp Kirjeldus
Lahke ErrorKind enum (arv) Tõrke kategooria.
Sõnum Tekstistring Teade tõrke kohta, mis sobib lõppkasutajale kuvamiseks.
Allikas Tekstistring Asukoht, kust tõrge on pärit. Seda kasutatakse aruandluses. Näiteks juhtelemendi atribuudiga seotud valemi puhul on see väärtus kujul ControlName.PropertyName.
Täheldatud Tekstistring Asukoht, kus tõrge ilmneb kasutajale. Seda kasutatakse aruandluseks. Näiteks juhtelemendi atribuudiga seotud valemi puhul on see väärtus kujul ControlName.PropertyName.
Üksikasjad Kirje Üksikasjad tõrke kohta. Praegu esitatakse üksikasjad ainult võrguvigade kohta. See kirje sisaldab HttpStatusCode’i , mis sisaldab HTTP-olekukoodi, ja HttpResponse’i , mis sisaldab konnektori või teenuse vastus keha.

Näiteks kaaluge järgmist valemit, kui juhtelemendi Nupp atribuuti OnSelect:

Set( a, 1/0 )

Ja see valem OnSelect atribuudi teise Nupp kontrollis:

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

Ülaltoodud näitevalem kuvab järgmise banneri, kui kaks nuppu on järjest aktiveeritud:

Aktiveeritakse nupu juhtelement, mis näitab teadet funktsioonilt Notify.

Tavaliselt on ainult üks viga, millega FirstError saab piisavalt töötada. Siiski leidub olukordi, kus võidakse tagastada mitu tõrget. Näiteks siis, kui kasutatakse valemi tõstmistehtemärki või samaaegset funktsiooni. Isegi sellistes olukordades võib esimese tõrke teade olla piisav probleemi nägemiseks, selle asemel, et koormata kasutajat liigselt mitmete tõrgetega. Kui teil on siiski vaja teha tööd iga tõrkega individuaalselt, võite kasutada kõikide tõrgete tabelit.

IsError

Funktsioon IsError testib veaväärtust.

Tagastusväärtus on loogikaväärtus: tõene või väär.

Kasutamine IsError takistab tõrke edasist töötlemist.

IsBlankOrError

Funktsioon IsBlankOrError testib kas tühja või veaväärtust ja võrdub väärtusega Or( IsBlank( X ), IsError( X ) ).

Olemasolevate rakenduste tõrketöötluse lubamisel asendage IsBlankIsBlankOrError olemasoleva rakenduse käitumisega. Enne veakäsitluse lisamist kasutati tühja väärtust nii andmebaaside tühiväärtuste kui ka veaväärtuste esitamiseks. Error käsitlemine eraldab need kaks tühja tõlgendust, mis võivad muuta IsBlanki kasutamist jätkavate olemasolevate rakenduste käitumist.

Tagastusväärtus on kahendmuutuja tõene või väär.

Kasutamine IsBlankOrError takistab tõrke edasist töötlemist.

Selle Error funktsiooni abil saate luua ja teatada kohandatud tõrkest. Näiteks võib teil olla loogika määratlemaks seda, kas mõni antud väärtus on kehtiv teie konteksti jaoks – seda ei kontrollita probleemi puhul automaatselt. Saate luua ja tagastada oma vea (koos funktsiooniga Kind ja Message), kasutades funktsiooni jaoks ülalkirjeldatud kirjet IfError .

IfError Error Kasutage funktsiooni funktsiooni tõrke taastekitamiseks või läbimiseks. Näiteks võib teie loogika IfError otsustada, et mõnel juhul võidakse viga ohutult ignoreerida, kuid muudel juhtudel on viga oluline läbi saata. Kasutage tõrke läbimiseks funktsiooni Within IfError või App.OnErrorError.

Funktsiooni Error saab edastada ka tõrgete tabelina, nagu on näidatud tabelis AllErrors . Kasutage kõikiError tõrkeid ( AllErrors ) kõigi vigade taassalvestamiseks, mitte ainult esimesena.

Tühja kirje või tühja tabeli edastamine Error ei tagasta tõrkeid.

Süntaks

Error( ErrorRecord )
Error( ErrorTable )

  • ErrorRecord – nõutav. Error teabekirje (sh Liik, Sõnum ja muud väljad). Lahke on vajalik. FirstErrori saab otse edasi anda.
  • ErrorTable – nõutav. Tõrketeabe kirjete tabel. AllErrorsit saab otse edasi anda.

IfError( Väärtus1, asendus1 [, väärtus2; asendus2; ... [, DefaultResult ] ] )

  • Väärtused – nõutav. Valemid vea väärtuse testimiseks..
  • Asendused - Nõutav. Hinnatavad valemid ja tagastatavad väärtused, kui vastavad argumendid Value tagastasid vea.
  • DefaultResult – valikuline. Valemid, mida hinnatakse, kui valem ei leia tõrkeid.

IsError( Väärtus )
IsBlankOrError( Väärtus )

  • Väärtus – nõutav. Testitav valem.

Näited

Lihtne IfError

Valem Kirjeldus Tulemus
IfError( 1, 2 ) Esimene argument pole tõrge. Funktsioonil ei ole muid tõrkeid, mida kontrollida, ja tagastamise vaikeväärtust. Funktsioon tagastab viimase hinnatava value argumendi. 1
IfError( 1/0, 2 ) Esimene argument tagastab veaväärtuse (nulliga jagamise tõttu). Funktsiooni abil hinnatakse teist argumenti ja tagastatakse see tulemina. 2
IfError( 10, 20, 30 ) Esimene argument pole tõrge. Funktsioonil ei ole muid tõrkeid, mida kontrollida, kuid on tagastatav vaikeväärtus. Funktsioon tagastab DefaultResult argumendi. 30
IfError( 10, 11, 20, 21, 300 ) Esimene argument 10 ei ole viga, seega ei hinda funktsioon selle argumenti vastavat asendamist 11. Kolmas argument 20 ei ole samuti viga, seega ei hinda funktsioon selle argumenti vastavat asendamist 21. Viiendal argumentil 300 puudub vastav asendus ja see on vaiketulem. Funktsioon tagastab selle tulemi, kuna valem ei sisalda tõrkeid. 300
IfError( 1/0, Notify( "Ilmnes sisemine probleem" ) ) Esimene argument tagastab veaväärtuse (nulliga jagamise tõttu). Funktsioon hindab teist argumenti ja kuvab kasutajale sõnumi. Tagastusväärtus IfError on teatise tagastusväärtus, mille tulem on sama tüüpi kui esimese argumendi IfError väärtus (arv). 1

Lihtne IsError

Valem Kirjeldus Tulemus
IsError( 1 ) Argument pole tõrge. väär
IsError( Tühi() ) Argument on tühi, kuid mitte tõrge. väär
IsError( 1/0 ) Argument on tõrge. Tõsi
If( IsError( 1/0 ), Notify( "Ilmnes sisemine probleem" ) ) Tagastatav IsError argument tagastab veaväärtuse (nullijagamise tõttu). See funktsioon tagastab väärtuse tõene, mis põhjustab If sõnumit, kui kasutada Notify funktsiooni. Funkstiooni If tagastusväärtus on funktsiooni Notify tagastusväärtus, teisendatud samasse tüüpi kui funktsioni If esimene argument (kahendmuutuja). Tõsi

Lihtne IsBlankOrError

Valem Kirjeldus Tulemus
IsBlankOrError( 1 ) Argument on tühi, kuid mitte tõrge. väär
IsBlankOrError( Tühi() ) Argument on tühi. Tõsi
IsBlankOrError( 1/0 ) Argument on tõrge. Tõsi

Lihtne Error

Selles näites kinnitatakse kuupäevad üksteise suhtes, mille tulemuseks on tõrge, kui seal esineb probleem.

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

Selles näites lubatakse mõnel veal läbida, samas kui teised on maha surutud ja asendatud väärtusega. Esimesel juhul on b veaolekus, kuna funktsioonil Value on sobimatu argument. Kuna see on valemikirjutaja poolt ootamatu, antakse see läbi nii, et kasutaja seda näeb. Teisel juhul on sama valemiga b väärtus 0, mille tulemuseks on jagamine nulliga. Sellisel juhul võib valemi kirjutaja teada, et see on selle loogika puhul vastuvõetav, suruda tõrke maha (ühtegi riba ei kuvata) ja tagastada hoopiski -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

Tabelit Kõik tõrked saab filtreerida nagu kõiki teisi tabeleid. Funktsiooniga Error saab eeldatavad tõrked eemaldada ning ülejäänud tõrked säilitada ja neist teatada. Näiteks kui me teaksime, et nulliga jagamine ei ole konkreetses kontekstis probleem, saaks need vead välja filtreerida, jättes kõik muud vead puutumata järgmise valemiga:

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

Samm-sammult

  1. Lisage juhtelement tekstisisend ja nimetage see TekstInput1, kui see pole vaikimisi selle nimega.

  2. Lisage juhtelement silt ja nimetage see Silt1, kui see pole vaikimisi selle nimega.

  3. Seadke valem juhtelemendi Silt1 atribuudile Tekst:

    IfError( Value( TextInput1.Text ), -1 )
    
  4. Väljale TextInput1, sisestage 1234.

    Label1 näitab väärtust 1234 , kuna see on funktsiooni Value kehtiv sisend.

  5. Väljale TextInput1, sisestage ToInfinity.

    Label1 näitab väärtust-1 , kuna see pole funktsioonile Value sobiv sisend. Ilma funktsiooni IfErrorValue mähkmata ei kuvata sildil väärtust, kuna veaväärtust käsitletakse tühjana.

Vt ka

Valemi viide Power Apps