スクリプト ツールでのエラー処理

Python エラーを処理する際の基本事項については、トピック「Python でのエラー処理」で説明しています。Python.org のドキュメント「エラーと例外」には、より詳細な情報が掲載されています。

Result オブジェクトからのエラー メッセージの取得

Result オブジェクトについての概要を次に示します。

result = arcpy.GetCount_management("c:/data/rivers.shp")

GetCount の呼び出しで例外が発生した場合、Result オブジェクトは Null になります。つまり、その結果オブジェクトからエラー メッセージを取得することはできません。

import arcpy
try:
    result = arcpy.GetCount_management("c:/data/rivers.shp")

# Return GEOPROCESSING specific errors
# (this method is INCORRECT!)
except:
    arcpy.AddError(result.getMessages(2))

上記のコードは失敗し、メッセージ「name 'result' is not defined」が返されます。この理由は、ツールが失敗したため結果オブジェクトを作成できなかったからです。Result オブジェクトが作成されないため、getMessages メソッドを試行すると Python エラーが生成されます。

注意注意:

ArcGIS Server 上でのジオプロセシング サービスの呼び出しによって作成される Result オブジェクトは、ツールが失敗した場合でも作成されます。Result オブジェクトの作成は、ツールがローカルに実行されてエラーが生成された場合のみ失敗します。Result オブジェクトの使用の詳細については、「ジオプロセシング ツールからの結果の取得」をご参照ください。

AddReturnMessage を使用した、エラー コードへのリンクの保持

進行状況ダイアログ ボックスに表示されるジオプロセシング エラー番号は、エラーの詳細を示すヘルプ ページへのハイパーリンクになっています。スクリプトでエラーのハイパーリンクを有効にするには、次に示すように、AddError 関数ではなく AddReturnMessage 関数を使用します。

import arcpy
try:    
    result = arcpy.GetCount_management("c:/data/rivers.shp")

except:    
    # Return Geoprocessing tool specific errors
    #
    for msg in range(0, arcpy.GetMessageCount()):
        if arcpy.GetSeverity(msg) == 2:
            arcpy.AddReturnMessage(msg)

7/10/2012