Partilhar via


Erros

Um erro na linguagem de fórmula do Power Query M é uma indicação de que o processo de avaliação de uma expressão não pôde produzir um valor. Os erros são gerados por operadores e funções que encontram condições de erro ou usando a expressão de erro. Os erros são tratados usando a expressão try . Quando um erro é gerado, um valor é especificado que pode ser usado para indicar por que o erro ocorreu.

Tente a expressão

Uma expressão try converte valores e erros em um valor de registro que indica se a expressão try manipulou um erro ou não, e o valor adequado ou o registro de erro extraído ao manipular o erro. Por exemplo, considere a seguinte expressão que gera um erro e, em seguida, manipula-o imediatamente:

try error "negative unit count"

Esta expressão é avaliada com o seguinte valor de registro aninhado, explicando as [HasError], [Error]pesquisas de campo e [Message] , no exemplo de preço unitário anterior.

Registo de erros

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

Um caso comum é substituir erros por valores padrão. A expressão try pode ser usada com uma cláusula opcional de outra forma para conseguir exatamente isso em uma forma compacta:

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

Exemplo de erro

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

O exemplo anterior acessa o campo e formata o valor que produz o Sales[UnitPrice] resultado:

"Unit Price: 2"

Se o campo Unidades tivesse sido zero, então o UnitPrice campo teria gerado um erro que teria sido tratado pela tentativa. O valor resultante teria então sido:

"No Units"