Я работаю с GDAL в Python и хотел, чтобы GDAL вызывал исключения, чтобы я мог сделать с ними что-то полезное. Например, если файл нельзя открыть с помощью gdal.Open (), я бы хотел выдать исключение вместо gdal, возвращающего None. Я просто хотел бы получить способ фиксировать ошибки, а не сбрасывать их в sys.stdout.
В настоящее время я пытался использовать gdal.UseExceptions()
функцию, но столкнулся с проблемой. Когда gdal.UseExceptions()
он установлен, кажется, что он скрывает определенные ошибки и не создает исключений для них. Например, ERROR 5: Access window out of range in RasterIO() Requested (1,15) of size 25x3 on raster of 26x17
исчезает и не возникает никаких исключений. Это кажется довольно опасным.
Любые идеи приветствуются, спасибо.
Ответы:
Обработчик UseExceptions не слушает ничего, кроме CE_Error или CE_Fatal. Вероятно, вы видите сообщение CE_Warning или CE_Debug (проверьте возвращаемое значение вашего функционального вызова, чтобы увидеть, чему оно равно).
Этот компромисс был сделан для того, чтобы убедиться, что «новые» привязки python ведут себя так же, как и «старые» привязки python (которые были обработаны вручную со всей обработкой ошибок, относящейся к типу проверки возврата). Я согласен, что это отстой.
Не стесняйтесь подать заявку, чтобы мы могли добавить уровни для обработчика исключений для прослушивания, аля
источник