Les på engelsk

Del via


Feil

En feil i power query M-formelspråket er en indikasjon på at prosessen med å evaluere et uttrykk ikke kunne produsere en verdi. Feil oppstår av operatorer og funksjoner som støter på feilforhold eller ved hjelp av feiluttrykket. Feil håndteres ved hjelp av prøveuttrykket. Når det oppstår en feil, angis en verdi som kan brukes til å angi hvorfor feilen oppstod.

Prøv uttrykk

Et forsøksuttrykk konverterer verdier og feil til en postverdi som angir om prøveuttrykket håndterte en feil, eller ikke, og enten den riktige verdien eller feilposten som ble trukket ut under håndtering av feilen. Vurder for eksempel følgende uttrykk som utløser en feil, og håndterer det umiddelbart:

try error "negative unit count"

Dette uttrykket evalueres til følgende nestede postverdi, som forklarer [HasError], [Error], og [Message] feltoppslagene i enhetspriseksempelet før.

Feilpost

[
    HasError = true,
    Error =
        [  
            Reason = "Expression.Error",
            Message = "negative unit count",
            Detail = null
        ]
]

Et vanlig tilfelle er å erstatte feil med standardverdier. Prøveuttrykket kan brukes med en valgfri ellers setningsdel for å oppnå nettopp dette i en kompakt form:

try error "negative unit count" otherwise 42
// equals 42

Feileksempel

let Sales =
        [
        ProductName = "Fishing rod",
            Revenue = 2000,
            Units = 1000,
            UnitPrice = if Units = 0 then error "No Units"
                    else Revenue / Units
        ],

    //Get UnitPrice from Sales record
        textUnitPrice = try Number.ToText(Sales[UnitPrice]),
    Label = "Unit Price: " &
        (if textUnitPrice[HasError] then textUnitPrice[Error][Message]
        //Continue expression flow
            else textUnitPrice[Value])
in
    Label

Det forrige eksemplet åpner Sales[UnitPrice] feltet og formaterer verdien som produserer resultatet:

"Unit Price: 2"

Hvis Enheter-feltet hadde vært null, UnitPrice ville feltet ha utløst en feil som ville blitt håndtert av forsøket. Resultatverdien ville da ha vært:

"No Units"