Manejo de errores en las herramientas de secuencia de comandos

Los conceptos básicos sobre el manejo de errores de Python se analizan en el tema Manejo de errores con Python. El documento de Python.org Errores y excepciones ofrece información más detallada.

Obtener mensajes de error desde un objeto de resultados

A continuación se muestra un breve análisis sobre el objeto de Resultados:

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

Si la solicitud a GetCount muestra una excepción, el objeto de resultados es nulo. Esto significa que no puede recuperar mensajes de error desde el objeto de resultados.

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)) 

El código anterior falla con el mensaje "no está definido el 'resultado' del nombre". Esto se debe a que no se pudo crear el objeto de resultados por los errores de la herramienta. Debido a que no se creó el objeto de resultados, se muestra un error de Python cuando intenta utilizar el método getMessages.

NotaNota:

Un objeto de resultados que se crea mediante la solicitud de un servicio de geoprocesamiento en ArcGIS Server se crea con errores en la herramienta. Un objeto de resultados no se puede crear únicamente cuando una herramienta se ejecuta localmente y muestra un error. Para obtener más información sobre el uso del objeto de resultados, consulte Obtener resultados desde una herramienta de geoprocesamiento.

Utilizar AddReturnMessage para conservar los vínculos a los códigos de error

Los números de error de geoprocesamiento que se muestran en el cuadro de diálogo de progreso son hipervínculos a una página de ayuda que describen el error con más detalle. Para habilitar hipervínculos de errores en la secuencia de comandos, utilice la función AddReturnMessage en vez de la función AddError, como se muestra a continuación:

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