ジオプロセシング ツールのエラーと警告

ジオプロセシング エラーと警告は、6 桁のコードとテキストによるメッセージで、ジオプロセシング ツールから返されます。デスクトップ ヘルプ システムには、すべてのエラーおよび警告に対応する説明ページがあります。このページには、エラーの詳細説明と、エラーに対して実施できる解決策の両方が記載されています。ツールのダイアログ ボックス、Python ウィンドウ、および [結果] ウィンドウにある ID コードはリンクになっており、このリンクをクリックすると説明ページが表示されます。

内部エラーおよび履歴ログ ファイル

ツールがエラーを生成すると、標準エラー コードおよびメッセージが表示されます。場合によっては、標準エラー コードとともに内部システム エラーが発生することがあります。これらの内部システム エラーは、問題を理解する上でほとんど役に立たないことが多いので、通常は標準エラー メッセージの一部として表示されることはありません。ただし、一部のケースでは、これらのメッセージがエラーの原因を修正および解決するための手掛かりになる場合もあります。

内部システム エラーを表示するには、まずメッセージ ロギングを有効にする必要があります。[プロジェクト] タブをクリックし、[オプション] パネルで [ジオプロセシング] をクリックしてから、[ジオプロセシング操作を XML ログ ファイルに書き込む] チェックボックスをオンにします。ログ ファイルの有効化の詳細については、「ジオプロセシング操作を XML ログ ファイルに書き込む」をご参照ください。

スクリプトおよびスクリプト ツールでのエラーと警告の作成

Python では、AddWarning 関数と AddError 関数を使用して、ユーザー独自のカスタム エラーと警告を作成できます。一方で、AddIDMessage 関数を使用して、標準エラーまたは警告メッセージをユーザーが作成することもできます。標準エラーまたは警告を作成すれば、ドキュメントを別途用意する必要がなくなります。つまり、スクリプトのユーザーは、デスクトップ ヘルプに表示されるエラーの説明と解決策を読めば済みます。

標準エラーまたは警告を作成するには、まず 6 桁のコードが分かっている必要があります。このためには、ユーザーの側でコードを調べる必要があります。つまり、デスクトップ ヘルプにある説明を探して、該当する 6 桁のコードを見つけてください。該当するコードを特定した後、メッセージに組み込む必要がある追加情報のメモを取っておきます。通常は、<value> のように示されています。たとえば、コード 12 は "<value> already exists." です。この場合は、AddIDMessage(){add_argument1} パラメーターに値 (つまり、データセットの名前) を指定する必要があります。

次に示す Python のサンプルは、フィーチャクラスが入力として指定されたかどうかを検査し、そうでない場合は AddIDMessage() を使用してコード 12 を返します (000012: <value> already exists)。オプションの引数を使用して、パラメーターをフィーチャクラス名に置換し、メッセージに挿入しています。

class overwriteError(Exception):
    pass
import arcpy
inFeatureClass  = arcpy.GetParameterAsText(0)
outFeatureClass = arcpy.GetParameterAsText(1)
try:
    # If the output feature class already exists, raise an error
    if arcpy.Exists(inFeatureClass):
        raise overwriteError(outFeatureClass)
    else:
        # Additional processing steps
except overwriteError as e:
    # Use message ID 12, and provide the output feature class
    #    to complete the message.
    arcpy.AddIDMessage("Error", 12, str(e))