Philip Withnall philip.withnall@collabora.co.uk 2015 Tratamento e relatório de erro em tempo de execução Rafael Fontenelle rafaelff@gnome.org 2017 GError
Uso do GError

GError é o mecanismo padrão de relatório de erro para códigos usando GLib e pode ser pensado como uma implementação C de uma exceção.

Qualquer tipo de falha em tempo de execução (qualquer coisa que não seja um erro de programação) deve ser tratado com a inclusão de um parâmetro GError** na função e definição de um GError útil e relevante que descreva a falha, antes de retornar a função. Os erros de programação não devem ser tratados usando GError: use asserções, pré-condições ou pós-condições.

O GError deve ser usado como preferência a um código de retorno simples, pois ele pode transmitir mais informações e também tem suporte em todas as ferramentas em GLib. Por exemplo, introspecção de uma API detectará automaticamente todos os parâmetros de GError de forma que eles possam ser convertidos para exceções em outros idiomas.

A impressão de avisos para o console não deve ser feita no código da biblioteca: use um GError e o código de chamada pode propagá-lo mais para cima, decidir tratá-lo ou decidir imprimi-lo para o console. Idealmente, o único código que imprime para o console será um código de aplicativo topo de nível, e não um código de biblioteca.

Qualquer chamada de função que possa levar um GError**, deve levar tal parâmetro e o GError retornado deve ser tratado apropriadamente. Há muito poucas situações nas quais ignorar um erro em potencial passando NULL para um parâmetro GError** é aceitável.

A documentação de API do GLib contém um tutorial completo sobre o uso de GError.