パワークエリM言語の例外処理

       動作中のプログラムによる異常様々な予測不可能なエラーは、このプログラムの実行は、背後にあるコードを無視する異常な位置で中断された後にエラーが発生した場合に生じます。いくつかの良いコードを簡単にプログラムがクラッシュすることなく、スムーズに実行できることを保証するために、任意の異常な状況に対処することができ、それは多くの場合、コードの堅牢性と言われています。ハンドラはすべてもすることはできません事前に判断して対処するための優れたメカニズムを持っている必要があり外にできるだけ多く起こる予測する異常な状況に加えて走るたいです。プログラミング言語は、通常、例外処理メカニズムを提供します。

       1.定義とスロー

       2は、例外を処理するためにアクセスします。

Mでも同様のメカニズム、そして我々の詳細です。

M言語の異常と異常マーク

M言語は何をして異常が?主に以下の分野における一般的な異常:

1、間違った関数パラメータ生成されたエラー

          例えばNumber.ToText(数)だけ数値パラメータ、プログラムの他のタイプの直接エラーのパラメータを扱うことができるため。

てみましょう
    結果= Number.ToText( "1")
    結果

  

図2に示すように、操作者が不適切なデータを操作します。

            例えば、+デジタルまたは時間型のデータが追加されただけのために署名が、場合両側プラス他のタイプのデータの出現はプログラムについて説明します

てみましょう
    結果= 1+ "1"
    結果

  

これらのエラーメッセージ黄色の領域は、エラーが、それが直接私たちにそれを表示するためにスローされますが発生した場合、PowerBIによって事前に定義されています。

どのようにそれはエラーメッセージを定義していますか?実際には非常に単純な、それをキーワードにエラー+エラーメッセージを使用して

小さな例:

てみましょう
    -1の値は、最初に、あなたが例外をスローすることができるようならば、A = -1、//は、変数を定義します
    結果=これは> 0はそれ以外の場合はエラーをスローしたときに値を返す式であれば//他のエラー「ポジティブではない」それから> 0であれば
    結果

  

結果により、我々は、システムがエラーメッセージを取得するために持っていることを見ることができます。しかし、これは私たちが望むものではありません、コードはこの場合、間違った位置からで停止している、データが従うことができる、処理されるべき多くのデータがあります。だから我々は我々のプログラムを書くのエラーを取得、代わりにシステムを取得する必要があります。次はM言語が間違った方法を取得し紹介します。

M言語の習得珍しい方法

私たちは、表現がトライキーワードを使用するには、例外をスロー必要かどうかを見てみたいです。次のように使用方法は以下のとおりです。

式をテストすることがしてみてください

  この式は、レコードの実行、後に返す式は、試験すべき例外がスローされたとき、レコードは、おそらく次のようになりそこに:

[  
    HasError =真、  
    エラー=  
        [  
            理由= "Expression.Error"、  
            メッセージ=「エラーメッセージ」、//エラーメッセージここでは、キーワードでのエラーの背後にある文字列です。
            詳細= nullを  
        ]  
]  

  ときに式をテストするために例外がスローされない場合は、レコードのリターンはこのようなものです

[  
    HasError = FALSE;  
    正しい結果の値=式をテストします
]  

  私たちは式の変数の値を割り当てることができます

結果=式をテストすることを試みます

  その後、レコードインデックスによりエラーとエラーメッセージまたは結果の最終値の式を得ることができます。

結果[HasError] // TRUEまたはFALSEの値を決定します
例外が命令をスローされたときに結果が[HasError] TRUEである場合は、エラーメッセージを取得する結果[エラー] [メッセージ]を使用することができます

何の説明例外がスローされていない場合、結果は[HasError] FALSEであるときは、その結果の発現を得るために結果[値]を使用することができます

  小さな例:

聞かせて販売=  
        [  
        商品名=「釣りロッド」、//名前
            収入= 2000、//収入
            単位= 1000、//数
            単価=単位= 0、エラー「単位なし」の場合  
                    他の収益/単位//単位は例外がそれ以外の場合は平均スローさ0のとき
        ]、  
  
        textUnitPrice =試すNumber.ToText(販売[単価])、 
        //デジタル型準の平均価格は、テキストタイプを置き換えます
        
    ラベル=「単価:」&   
        (もしtextUnitPrice [HasErrorそして 
            textUnitPrice [エラー] [メッセージ]  
         textUnitPrice [値])  
    ラベル  

  上記の例にアクセスSales[UnitPrice]フィールド、結果値生成のフォーマット:

「単価:2」  

  単位フィールドが0の場合、UnitPriceフィールドは、例外エラーがスローされます、エラーが治療を取得しようとします。結果の値は次のようになります。

「単価:単位なし」  

  一般的なシナリオは、デフォルト値と間違って交換することです。試す式は上記の手順は、よりコンパクトで単純な形式で実現するために、そうでなければ任意の句で使用することができます。

聞かせて販売=  
        [  
        商品名=「釣りロッド」、   
            収入= 2000、            
            単位= 1000、              
            単価=単位= 0、エラー「単位なし」の場合  
                    他の収益/単位  
        ]、  
  
     textUnitPrice = Number.ToText(販売[単価])それ以外の場合は "単位なし" をしてみてください、 
        
     ラベル= "単価:" &textUnitPrice 
   
    ラベル   

  

これは、インデックストライと戻り値にアクセスすることなく、最終的な結果が得られます。

多くの機能は、一度にMicrosoftが開発事業者は、エラー情報を定義していたM言語は、我々が直接、エラーメッセージの表現を取得するために時間を使うことができるようになります使用しようとすることに注意してください、少しの友人が前を思い出しましたプラス+テキストと数字を使用する際に一緒にエラーの導入につながり、このエラーメッセージは、開発者がすでに定義されていることです。

 

おすすめ

転載: www.cnblogs.com/hunterZ/p/11300787.html