Funkcijas Error, IfError, IsError, IsBlankOrError
Attiecas uz: Pamatnes programmu Dataverse formulu kolonnām Darbvirsmas plūsmas Modeļa vadītas programmas Power Platform CLI
Konstatē kļūdas un nodrošina alternatīvu vērtību vai veic darbības. Izveidojiet pielāgotu kļūdu vai izejiet cauri kļūdai.
Note
- Šajā rakstā aprakstītā darbība ir pieejama tikai tad, ja ir ieslēgts priekšskatījuma līdzeklis Formulas līmeņa kļūdu pārvaldība sadaļā Iestatījumi>Gaidāmie līdzekļi>Priekšskatījums.
IfError
Funkcija IfError pārbauda vērtības, līdz atrod kļūdu. Ja funkcija atklāj kļūdu, tā izvērtē un atgriež atbilstošo aizstāšanas vērtību un pārtrauc turpmāku vērtēšanu. Noklusējuma vērtību var arī nodrošināt gadījumā, ja nav atrastas kļūdas. Funkcijas IfError struktūra atgādina If funkcijas struktūru: IfError pārbauda kļūdas, savukārt If funkcija meklē vērtības true.
Izmantojiet funkciju IfError, lai aizstātu kļūdu ar derīgu vērtību, lai var turpināt pakārtotos aprēķinus. Piemēram, izmantojiet šo funkciju, ja lietotāja ievade var izraisīt dalīšanu ar nulli:
IfError( 1/x, 0 )
Šī formula atgriež 0
, ja x
vērtība ir nulle, jo 1/x
radīs kļūdu. Ja x
nav nulle, tad tiek atgriezta 1/x
.
Turpmākas apstrādes pārtraukšana
Saķēdējot formulas kopā uzvedības formulās, piemēram:
Patch( DS1, ... );
Patch( DS2, ... )
Otrā Patch funkcija DS2
tiks izmēģināta, pat ja Patch funkcija pret DS1
neizdodas. Kļūdas tvērums tiek ierobežots līdz katrai ķēdē esošajai formulai.
Izmantojiet funkciju IfError, lai izpildītu darbību un turpiniet apstrādi tikai tad, ja darbība ir izdevusies. Funkcijas IfError piemērošana šajā piemērā:
IfError(
Patch( DS1, ... ), Notify( "problem in the first action" ),
Patch( DS2, ... ), Notify( "problem in the second action" )
)
Ja DS1
funkcijai Patch rodas problēma, vispirms tiek izpildīta Notify. Netiek veikta tālāka apstrāde, tostarp DS2
otrā Patch. Ja pirmā Patch izdodas, tiks veikta otrā Patch.
Ja tas tiek nodrošināts, tiek atgriezts neobligātais arguments DefaultResult, ja nav atklātas kļūdas. Bez šī argumenta tiek atgriezta argumenta pēdējā Vērtība.
Pamatojoties uz pēdējo piemēru, atgriezto vērtību no funkcijas IfError var pārbaudīt, lai noteiktu, vai radušās kādas problēmas:
IfError(
Patch( DS1, ... ), Notify( "problem in the first action" ); false,
Patch( DS2, ... ), Notify( "problem in the second action" ); false,
true
)
Veidu saderība
Funkcija IfError atgriezīs viena no argumentiem vērtību. Visu vērtību veidiem, kurus varētu atgriezt funkcija IfError, ir jābūt saderīgiem.
Pēdējā piemērā funkcija Patch atgriezīs ierakstu, kas nav saderīgs ar Būla vērtībām, kas izmantotas ar Aizstāšanas formulām vai DefaultResult. Kas nav slikti, jo nav situācijas, kurā atgrieztā vērtībā no šiem Patch izsaukumiem tiktu atgriezta ar funkciju IfError.
Note
Lai gan procesā notiek uzvedības izmaiņas, visiem funkcijas IfError argumentiem ir jābūt saderīgiem pašlaik.
Vienkāršajā iepriekš aprakstītajā piemērā:
IfError( 1/x, 0 )
Abu tipu skaitļi 1/x
un 0
bija saderīgi, jo tie bija skaitļi. Ja tās nav saderīgas, otro argumentu saskaņos ar pirmā argumenta veidu.
Programma Excel rādīs #DIV/0!, ja tiks dalīts ar nulli.
Tā vietā apsveriet funkciju IfError ar šo:
IfError( 1/x, "#DIV/0!" )
Augstākminētā formula nedarbojas. Teksta virkni "#DIV/0!"
saskaņos ar pirmā argumenta veidu funkcijai IfError, kas ir skaitlis. IfError rezultāts būs vēl viena kļūda, jo teksta virkni nevar piespiest. Lai to labotu, pārvērtiet teksta virknes pirmo argumentu tā, lai IfError vienmēr atgrieztu teksta virkni:
IfError( Text( 1/x ), "#DIV/0!" )
Kā redzams iepriekš, funkcija IfError var atgriezt kļūdu ja Replacement vai DefaultResult ir kļūda.
FirstError / AllErrors
Aizvietošanas formulās informācija par atrastajām kļūdām ir pieejama ierakstā FirstError un tabulā AllErrors. AllErrors tabula ar kļūdu informācijas ierakstiem ar FirstError kā saīsni uz tabulas pirmo ierakstu. FirstError vienmēr atgriezīs tādu pašu vērtību kā First ( AllErrors).
Kļūdu ieraksti ietver:
Kolonna | Tipi | Apraksts |
---|---|---|
Veids | ErrorKind uzskaitījums (skaitlis) | Kļūdas kategorija. |
Ziņojums | Teksta virkne | Ziņojums par kļūdu, piemērots rādīšanai gala lietotājam. |
Avots | Teksta virkne | Vieta, kurā radās kļūda, kas tiek izmantota atskaišu rādīšanā. Piemēram, ja formula ir saistīta ar vadīklas rekvizītu, tas būs formā ControlName.PropertyName. |
Novērots | Teksta virkne | Vieta, kurā kļūda tiek rādīta lietotājam, lietota atskaitēm. Piemēram, ja formula ir saistīta ar vadīklas rekvizītu, tas būs formā ControlName.PropertyName. |
Detalizēta informācija | Ieraksts | Informācija par kļūdu. Pašlaik detalizēta informācija ir sniegta tikai par tīkla kļūdām. Šis ieraksts ietver HttpStatusCode , kas ietver HTTP statusa kodu unHttpResponse, kas ietver savienotāja vai pakalpojuma atbildes pamattekstu. |
Piemēram, ņemiet vērā šo formulu kā vadīklas Button rekvizītu OnSelect:
Set( a, 1/0 )
Šī formula rekvizītā OnSelect otrās vadīklas Pogai:
IfError( a, Notify( "Internal error: originated on " & FirstError.Source & ", surfaced on " & FirstError.Observed ) )
Formulas paraugs augšā ataino šo baneri, aktivizējot divas pogas pēc kārtas:
Parasti būs tikai viena kļūda, ar ko FirstError var pienācīgi strādāt. Taču ir scenāriji, kuros var tikt atgrieztas vairākas kļūdas. Piemēram, ja lietojat formulas saķēdēšanas operatoru vai funkciju Concurrent. Pat šādos gadījumos var pietikt ar FirstError ziņošanu, lai atklātu problēmu tā vietā, lai pārslogotu lietotāju ar vairākām kļūdām. Ja jums joprojām ir prasība strādāt ar katru kļūdu atsevišķi, varat izmantot tabulu AllErrors .
IsError
Funkcija IsError pārbauda kļūdas vērtību.
Atgrieztā vērtība ir Būla true vai false.
Izmantojot IsError tiks novērsta jebkāda turpmāka kļūdas apstrāde.
IsBlankOrError
Funkcija IsBlankOrError tiek izmantota tukšai vērtībai vai kļūdas vērtībai un ir ekvivalenta vērtībai Or( IsBlank( X ), IsError( X ) )
.
Iespējojot kļūdu apstrādi esošajās programmās, apsveriet iespēju aizvietot IsBlank ar IsBlankOrError, lai saglabātu esošo programmas darbību. Pirms kļūdu apstrādes pievienošanas tika izmantota tukša vērtība, lai attēlotu vērtības Null no datu bāzēm un kļūdu vērtības. Kļūdu apstrāde atdala šos divus tukšos skaidrojumus, kas var mainīt to esošo programmu darbību, kuras turpina lietot IsBlank.
Atgrieztā vērtība ir Būla patiess vai aplams.
Izmantojot IsBlankOrError, tiks novērsta turpmāka kļūdas apstrāde.
Izmantojiet funkciju Error, lai izveidotu un ziņotu par pielāgotu kļūdu. Piemēram, jums var būt loģika, lai noteiktu vai konkrētā vērtība ir derīga jūsu kontekstam vai nē — tas nozīmē, ka problēma netiek automātiski pārbaudīta. Varat izveidot un atgriezt savu kļūdu, pabeigt arKind un Message, izmantojot to pašu ierakstu, kas aprakstīts iepriekš funkcijai IfError .
IfError kontekst lietojiet funkciju Error, lai atkārtoti izmestu vai nodotu kļūdu. Piemēram, jūsu loģika funkcijā IfError var noteikt, ka dažos gadījumos kļūdu var droši ignorēt, bet citos kļūdu ir svarīgi pārsūtīt. Funkcijās IfError vai App.OnError izmantojiet Error( FirstError), lai nodotu kļūdu.
Funkciju Error var arī padot kā kļūdu tabulu, kāda tā būtu pieejama tabulā AllErrors. Izmantojiet Error( AllErrors ), lai atkārtotu visas kļūdas, ne tikai pirmo kļūdu.
Tukšs ieraksts vai tukša tabula, kas padota uz Error, neradīs kļūdu.
Sintakse
Error( ErrorRecord )
Error( ErrorTable )
- ErrorRecord – Obligāti. Kļūdas informācijas ieraksts, kas ietver lauku Veids, Ziņojums un citus. Lauks Veids jāaizpilda obligāti. FirstError var padot tieši.
- ErrorTable – Obligāti. Kļūdu informācijas ierakstu tabula. AllErrors var padot tieši.
IfError( Value1, Replacement1 [, Value2, Replacement2, ... [, DefaultResult ] ] )
- Vērtība(s) – Obligāti. Formula(-s), kurai pārbaudīt kļūdas vērtību.
- Replacement(s) – Obligāti. Novērtējamās formulas un atgriežamās vērtības, ja atbilstošie Vērtības argumenti atgrieza kļūdu.
- DefaultResult — Neobligāti. Novērtējamās formulas, ja formula neatrod kļūdas.
IsError( Vērtība )
IsBlankOrError( Vērtība )
- Value — Obligāti. Testa formula.
Piemēri
Vienkārša IfError
Formula | Apraksts | Rezultāts |
---|---|---|
IfError( 1, 2 ) | Pirmais arguments nav kļūda. Funkcijai nav citu pārbaudāmo kļūdu un nav noklusējuma atgrieztās vērtības. Šī funkcija atgriež pēdējo vērtēto vērtības argumentu. | 1 |
IfError( 1/0, 2 ) | Pirmais arguments atgriež kļūdas vērtību (dalīšanas ar nulli dēļ). Funkcija novērtē otro argumentu un atgriež to kā rezultātu. | 2 |
IfError( 10, 20, 30 ) | Pirmais arguments nav kļūda. Funkcijai nav citu pārbaudāmo kļūdu, taču tai ir noklusējuma atgrieztā vērtība. Funkcija atgriež DefaultResult argumentu. | 30 |
IfError( 10, 11, 20, 21, 300 ) | Pirmais arguments 10 nav kļūda, tāpēc funkcija nevērtē šī argumenta atbilstošo aizstājēju 11. Trešais arguments 20 arī nav kļūda, tāpēc funkcija nevērtē šī argumenta atbilstošo aizstājēju 21. Piektajam argumentam 300 nav atbilstoša aizstājēja, un tas ir noklusējuma rezultāts. Funkcija atgriež šo rezultātu, jo formulā nav kļūdu. | 300 |
IfError( 1/0, Notify( "Radās iekšēja problēma" ) ) | Pirmais arguments atgriež kļūdas vērtību (dalīšanas ar nulli dēļ). Funkcija novērtē otro argumentu un parāda lietotājam ziņojumu. Atgrieztā IfError kļūdas vērtība ir Notify atgrieztā vērtība, kas piespiesta tādam pašam veidam kā pirmais arguments funkcijai IfError (skaitlis). | 1 |
Vienkārša IsError
Formula | Apraksts | Rezultāts |
---|---|---|
IsError( 1 ) | Arguments nav kļūda. | false |
IsError( tukšs() ) | Arguments ir tukšs, bet ne kļūda. | false |
IsError( 1/0 ) | Arguments ir kļūda. | patiess |
If( IsError( 1/0 ), Notify( "Radās iekšēja problēma" ) ) | Arguments funkcijai IsError atgriež kļūdas vērtību (dalīšanas ar nulli dēļ). Šī funkcija atgriež patiess, kas liek funkcijai If parādīt ziņojumu, izmantojot funkciju Notify. Atgrieztā If kļūdas vērtība ir Notify atgrieztā vērtība, kas piespiesta tādam pašam veidam kā pirmais arguments funkcijai If (Būla vērtība). | patiess |
Vienkārši IsBlankOrError
Formula | Apraksts | Rezultāts |
---|---|---|
IsBlankOrError( 1 ) | Arguments nav tukšs un nav kļūda. | false |
IsBlankOrError( Blank() ) | Arguments ir tukšs. | patiess |
IsBlankOrError( 1/0 ) | Arguments ir kļūda. | patiess |
Vienkārša kļūda
Šajā piemērā datumi tiek validēti attiecībā cits pret citu, kā rezultātā rodas kļūda, ja rodas problēma.
If( StartDate > EndDate,
Error( { Kind: ErrorKind.Validation, Message: "Start Date must be before End Date" } ) )
Šajā piemērā dažām kļūdām ir ļauts tikt padotām, kamēr citas tiek apspiestas un aizstātas ar vērtību. Pirmajā gadījumā b būs kļūdas statuss, jo funkcijai Vērtība ir nederīgs arguments. Tā kā formulas autors to neizprot, tā tiek padota tālāk, tādēļ lietotājs to redzēs. Otrā gadījumā ar to pašu formulu b būs vērtība 0, kas rezultēsies dalījumā ar nulli. Šajā gadījumā formulas autors, iespējams, zina, ka šī loģika ir jutīga attiecībā uz šo loģiku, slāpē kļūdu (netiek rādīts neviens baneris) un tā vietā jāatgriež -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
Tabulu AllErrors var filtrēt tāpat kā jebkuru citu tabulu. Izmantojot funkciju Error, sagaidītās kļūdas var noņemt, bet atlikušās kļūdas vasr aizturēt un par tām ziņot. Piemēram, ja mēs zinām, ka dalījums pēc nulles konkrētam kontekstam nebūs problēma, šīs kļūdas var izfiltrēt, paturot visas pārējās kļūdas ar šādu formulas tekstu:
Error( Filter( AllErrors, Kind <> ErrorKind.Div0 ) )
Pakāpeniskas darbības
Pievienojiet Text input vadīklu un nosauciet to par TextInput1, ja tai pēc noklusējuma nav šāda nosaukuma.
Pievienojiet Label vadīklu un nodēvējiet to par Label1, ja tai pēc noklusējuma nav šāda nosaukuma.
Iestatiet Etiķetes1rekvizītu Teksts uz:
IfError( Value( TextInput1.Text ), -1 )
TextInput1 ievadiet 1234.
Label1 rādīs vērtību 1234, jo tā ir derīga ievade Vērtības funkcijai.
TextInput1 ievadiet ToInfinity.
Label1 rādīs vērtību -1, jo tā nav derīga ievade Vērtības funkcijai. Neaplaužot Vērtības funkciju ar IfError, etiķete nerādītu nekādu vērtību, jo kļūdas vērtība tiek uzskatīta par tukšu.