Ich arbeite mit GDAL in Python und wollte, dass GDAL Ausnahmen auslöst, damit ich damit etwas Nützliches anfangen kann. Wenn zum Beispiel eine Datei nicht mit gdal.Open () geöffnet werden kann, möchte ich eine Ausnahme auslösen, anstatt dass gdal None zurückgibt. Ich möchte nur eine Möglichkeit, die Fehler zu erfassen, anstatt sie in der Datei sys.stdout abzulegen.
Derzeit habe ich versucht, die gdal.UseExceptions()
Funktion zu verwenden, bin jedoch auf ein Problem gestoßen. Wenn gdal.UseExceptions()
gesetzt, scheint es bestimmte Fehler zu verbergen und keine Ausnahme für sie auszulösen. Zum Beispiel ERROR 5: Access window out of range in RasterIO() Requested (1,15) of size 25x3 on raster of 26x17
verschwindet und es wird keine Ausnahme ausgelöst. Das scheint ziemlich gefährlich zu sein.
Irgendwelche Ideen sind dankbar.
Antworten:
Der UseExceptions-Handler überwacht nur CE_Error oder CE_Fatal. Was Sie sehen, ist wahrscheinlich eine CE_Warning- oder CE_Debug-Nachricht (überprüfen Sie den Rückgabewert Ihres Funktionsaufrufs, um zu sehen, was er ist).
Dieser Kompromiss wurde eingegangen, um sicherzustellen, dass sich die "neuen" Python-Bindungen ähnlich wie die "alten" Python-Bindungen verhielten (die von Hand gerollt wurden, wobei alle Fehlerbehandlungen vom Typ "check-the-return" waren). Ich bin damit einverstanden, dass diese Art saugt.
Fühlen Sie sich frei, ein Ticket einzureichen, damit wir Levels für den Ausnahmehandler hinzufügen können, auf die er ua hören kann
quelle