Estoy trabajando con GDAL en Python y he querido que GDAL genere excepciones para poder hacer algo útil con ellos. Por ejemplo, si un archivo no se puede abrir con gdal.Open (), me gustaría lanzar una excepción en lugar de que gdal devuelva None. Solo me gustaría una forma de capturar los errores en lugar de que se viertan en sys.stdout.
Actualmente he intentado usar la gdal.UseExceptions()
función pero me encontré con un problema. Cuando gdal.UseExceptions()
se establece, parece ocultar ciertos errores y no generar una excepción en ellos. Por ejemplo, ERROR 5: Access window out of range in RasterIO() Requested (1,15) of size 25x3 on raster of 26x17
desaparece y no se genera ninguna excepción. Esto parece bastante peligroso.
Cualquier idea es apreciada, gracias.
Respuestas:
El controlador UseExceptions no escucha nada más que CE_Error o CE_Fatal. Lo que está viendo es probablemente un mensaje CE_Warning o CE_Debug (verifique el valor de retorno de su llamada funcional para ver a qué equivale).
Este compromiso se hizo para garantizar que los enlaces "nuevos" de Python se comportaran de manera similar a los enlaces "viejos" de Python (que se enrollaban a mano con todo el manejo de errores del tipo de comprobación de devolución). Estoy de acuerdo en que este tipo de apesta.
Siéntase libre de presentar un ticket para que podamos agregar niveles para que el controlador de excepciones escuche, ala
fuente