Aracılığıyla paylaş


Errors

Power Query M formül dilindeki bir hata , ifadeyi değerlendirme işleminin bir değer üretemediğinin göstergesidir. Hatalar, hata koşullarıyla karşılaşan işleçler ve işlevler tarafından veya hata ifadesi kullanılarak oluşturulur. Hatalar try ifadesi kullanılarak işlenir. Bir hata oluştuğunda, hatanın neden oluştuğunun belirtilmesi için kullanılabilecek bir değer belirtilir.

Try ifadesi

Try ifadesi, değerleri ve hataları, deneme ifadesinin bir hatayı işleyip işlemediğini ve hatayı işlerken ayıklanan doğru değeri veya hata kaydını gösteren bir kayıt değerine dönüştürür. Örneğin, bir hata oluşturan ve ardından hemen ele alan aşağıdaki ifadeyi göz önünde bulundurun:

try error "negative unit count"

Bu ifade, önceki birim fiyatı örneğinde ve [Message] alan aramalarını açıklayarak [HasError], [Error]aşağıdaki iç içe kayıt değerini değerlendirir.

Hata kaydı

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

Yaygın bir durum, hataları varsayılan değerlerle değiştirmektir. Try ifadesi, yalnızca küçük bir biçimde elde etmek için isteğe bağlı bir aksi yan tümcesiyle kullanılabilir:

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

Hata örneği

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

Önceki örnek alana erişir Sales[UnitPrice] ve sonucu oluşturan değeri biçimlendirir:

"Unit Price: 2"

Birimler alanı sıfır olsaydı, UnitPrice alan deneme tarafından işlenen bir hataya neden olurdu. Sonuçta elde edilen değer şu şekilde olacaktır:

"No Units"