Compartilhar via


Errors

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.

Experimentar expressão

Uma expressão try converte valores e erros em um valor de registro que indica se a expressão try lidou com 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"

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

Registro de erro

[
    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 obter 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 Sales[UnitPrice] campo e formata o valor que produz o resultado:

"Unit Price: 2"

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

"No Units"