Cuando se ejecuta una herramienta, ArcPy está completamente al tanto de la aplicación desde la que se invoca. Un efecto principal de esto es que puede escribir mensajes en Python y sus mensajes aparecen automáticamente en el cuadro de diálogo de progreso, en el resultado de la herramienta en la ventana Resultados y la ventana Python. También significa que cualquier modelo o herramienta de secuencia de comandos que invoque la herramienta tiene acceso a los mensajes que usted escribe.
Para obtener más información sobre la mensajería, consulte Entender el envío de mensajes en las herramientas de secuencia de comandos.
Durante la ejecución de una herramienta, se escriben mensajes que se pueden recuperar con las funciones de geoprocesamiento. Las cuatro funciones de ArcPy para escribir mensajes son las siguientes:
- AddMessage(message): para mensajes informativos en general (gravedad = 0)
- AddWarning(message): para mensajes de advertencia (gravedad = 1)
- AddError(message): para mensajes de error (gravedad = 2)
- AddIDMessage(message_type, message_ID, add_argument1, add_argument2): utilizado tanto para errores como para advertencias (el argumento message_type determina la gravedad).
Una llamada a AddIDMessage() muestra un mensaje corto y el Id. de mensaje, que es un vínculo a una explicación sobre la causa y las soluciones del problema. Cuando agrega un mensaje de error utilizando AddError() o AddIDMessage(), ocurre lo siguiente:
- Continúa la ejecución de la secuencia de comandos. Queda a su criterio agregar la lógica de manejo de errores adecuada y detener la ejecución de la secuencia de comandos. Por ejemplo, es posible que deba eliminar cursores o archivos intermedios.
- Después de la devolución de la secuencia de comandos, la secuencia de comandos o el modelo que hace la llamada reciben un error de sistema y la ejecución se detiene.
Ejemplo de agregar mensajes
En el ejemplo siguiente, la entrada se evalúa y si no contiene entidades de entrada, se agrega un mensaje de error a la herramienta y se eleva una excepción de arcpy.ExecuteError para finalizar la herramienta.
import arcpy
input = arcpy.GetParameterAsText(0)
output = arcpy.GetParameterAsText(0)
# If the input has no features, add an error message, and raise
# an arcpy.ExecuteError
if int(arcpy.GetCount_management(input)[0]) == 0:
arcpy.AddError("{0} has no features.".format(input))
raise arcpy.ExecuteError