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` is the standard error reporting mechanism for GLib-using code, and can be thought of as a C implementation of an exception.

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.