Estou trabalhando com o GDAL em Python e queria que o GDAL levantasse exceções para que eu pudesse fazer algo útil com elas. Por exemplo, se um arquivo não puder ser aberto com gdal.Open (), eu gostaria de lançar uma exceção em vez de gdal retornar None. Gostaria apenas de uma maneira de capturar os erros em vez de serem despejados no sys.stdout.
Atualmente, tentei usar a gdal.UseExceptions()
função, mas me deparei com um problema. Quando gdal.UseExceptions()
está definido, parece ocultar certos erros e não gerar uma exceção neles. Por exemplo, ERROR 5: Access window out of range in RasterIO() Requested (1,15) of size 25x3 on raster of 26x17
desaparece e nenhuma exceção é levantada. Isso parece muito perigoso.
Todas as idéias são apreciadas, obrigado.
Respostas:
O manipulador UseExceptions não escuta nada além de CE_Error ou CE_Fatal. O que você está vendo é provavelmente uma mensagem CE_Warning ou CE_Debug (verifique o valor de retorno da sua chamada funcional para ver o que é igual).
Esse compromisso foi feito para garantir que as "novas" ligações python se comportassem da mesma forma que as "antigas" ligações python (que eram roladas manualmente com todo o tratamento de erros do tipo verificar o retorno). Eu concordo que esse tipo de merda.
Sinta-se à vontade para registrar um ticket para que possamos adicionar níveis para o manipulador de exceções ouvir, ala
fonte