Je travaille avec GDAL en Python et j'ai voulu que GDAL lève des exceptions pour que je puisse faire quelque chose d'utile avec elles. Par exemple, si un fichier ne peut pas être ouvert avec gdal.Open (), je voudrais lever une exception au lieu de gdal renvoyant None. Je voudrais juste un moyen de capturer les erreurs au lieu de les vider dans sys.stdout.
Actuellement, j'ai essayé d'utiliser la gdal.UseExceptions()
fonction mais j'ai rencontré un problème. Lorsqu'il gdal.UseExceptions()
est défini, il semble masquer certaines erreurs et ne pas déclencher d'exception à leur sujet. Par exemple, ERROR 5: Access window out of range in RasterIO() Requested (1,15) of size 25x3 on raster of 26x17
disparaît et aucune exception n'est levée. Cela semble assez dangereux.
Toutes les idées sont appréciées, merci.
Réponses:
Le gestionnaire UseExceptions n'écoute rien d'autre que CE_Error ou CE_Fatal. Ce que vous voyez est probablement un message CE_Warning ou CE_Debug (vérifiez la valeur de retour de votre appel fonctionnel pour voir à quoi elle correspond).
Ce compromis a été fait pour s'assurer que les "nouvelles" liaisons Python se comportaient de la même manière que les "anciennes" liaisons Python (qui étaient roulées à la main avec toute la gestion des erreurs étant du type check-the-return). Je suis d'accord ce genre de suce.
N'hésitez pas à déposer un ticket afin que nous puissions ajouter des niveaux pour le gestionnaire d'exceptions à écouter, ala
la source