Is it considered bad form to g_propagate_error() a custom error back to 
a caller,
when the error domain, enum  and quark definitions are not visible to 
the caller?

Example:

--bar.h--  (an internal module, not seen by the caller)
typedef enum
{
    BAR_ERROR_THIS,
    BAR_ERROR_THAT
} BarError;

#define BAR_ERROR  bar_error_quark ()

GQuark bar_error_quark (void) G_GNUC_INTERNAL;

--foo.h-- (a module with external visibility, called by users)

void   do_foo (GError **error);

--foo.c--

#include bar.h
void   do_foo (GError **error)
{
    GError *local_error = NULL;

     ... error occurs ...
 
   local_error = g_new_error (BAR_ERROR, BAR_ERROR_THIS, "this error");
   g_propagate_error (error, local_error);
   return;
}

When do_foo() returns the error to the caller, the user will have in his 
hands
an error that occurred "deeply" in the code with a domain and error code 
that
cannot be identified, e.g. with g_error_match().  The error can still, 
of course,
be reported with g_error (error->message) and it can be cleared/freed or 
even
propagated further.

Comments?

Phil
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to