スクリプト ツールでのエラー処理
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