次の方法で共有


エラー

Power Query の M 式言語でのエラーは、式を評価するプロセスが値を生成できなかったことを示します。 エラーは、エラー状態を検出した演算子や関数によって、またはerror 式を使用することによって、生成されます。 エラーは try 式を使用して処理されます。 エラーを生成するときは、エラーが発生した理由を示すために使用できる値を指定します。

try 式

try 式では、値とエラーが、try 式によってエラーが処理されたかどうか示すレコード値と、エラーを処理するときに抽出された適切な値またはエラー レコードに変換されます。 たとえば、エラーを発生させてすぐに処理する次の式について考えてみます。

try error "negative unit count"

この式は、前の単位価格の例での [HasError], [Error][Message] のフィールド参照を説明する、次のような入れ子になったレコード値に評価されます。

エラー レコード

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

一般的なケースは、エラーを既定値に置き換えることです。 try 式とオプションの otherwise 句を使用して、コンパクトな形式でそれだけを実現できます。

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

エラーの例

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

前の例では、Sales[UnitPrice] フィールドにアクセスし、結果を生成する値を書式設定しています。

"Unit Price: 2"

Units フィールドが 0 の場合、UnitPrice フィールドでエラーが発生し、try によって処理されます。 結果の値は次のようになります。

"No Units"