Pracuję z GDAL w Pythonie i chciałem, aby GDAL zgłaszał wyjątki, abym mógł zrobić z nimi coś pożytecznego. Na przykład, jeśli pliku nie można otworzyć za pomocą gdal.Open (), chciałbym zgłosić wyjątek zamiast gdal zwracającego None. Chciałbym po prostu uchwycić błędy zamiast zrzucania ich do sys.stdout.
Obecnie próbowałem użyć tej gdal.UseExceptions()
funkcji, ale natknąłem się na problem. Po gdal.UseExceptions()
ustawieniu wydaje się ukrywać niektóre błędy i nie zgłaszać wyjątków. Na przykład ERROR 5: Access window out of range in RasterIO() Requested (1,15) of size 25x3 on raster of 26x17
znika i nie jest zgłaszany żaden wyjątek. To wydaje się dość niebezpieczne.
Dziękujemy za wszelkie pomysły.
Odpowiedzi:
Procedura obsługi UseExceptions nie nasłuchuje niczego innego niż CE_Error lub CE_Fatal. To, co widzisz, to prawdopodobnie komunikat CE_Warning lub CE_Debug (sprawdź wartość zwracaną swojego wywołania funkcjonalnego, aby zobaczyć, co to równa).
Ten kompromis został wprowadzony, aby upewnić się, że „nowe” powiązania w pythonie zachowywały się podobnie do „starych” powiązań w pythonie (które były przetwarzane ręcznie, a cała obsługa błędów była typu check-the-return). Zgadzam się, że to do bani.
Złóż zgłoszenie, abyśmy mogli dodawać poziomy dla procedury obsługi wyjątków do słuchania, ala
źródło