Re: let g_warn_if_fail replace g_assert
- From: Yevgen Muntyan <muntyan tamu edu>
- To: Tim Janik <timj imendio com>
- Cc: Gtk+ Developers <gtk-devel-list gnome org>
- Subject: Re: let g_warn_if_fail replace g_assert
- Date: Fri, 19 Oct 2007 13:00:03 -0500
Tim Janik wrote:
> hey All.
>
> proposing to turn g_asert into a warning:
> http://mail.gnome.org/archives/gtk-devel-list/2007-October/msg00053.html
> was obviously not perceived too well.
>
> as i read it, most people are not against my basic
> reasoning, but are clearly in favour of adding
> g_warn_if_fail or a similar variant thereof.
>
Is g_warn_if_fail() useful at all? It would be nice to have a macro
which would warn *and* do something, like g_return_if_fail. I can't
imagine what syntax it would have, perhaps some
g_make_sure(a=2, {g_free(something); return;})
(it does look stupid, and it does look like a silly attempt to have nice
error handling in C), but I can't imagine how g_warn_if_fail is useful.
In what situations would it be used? Replacing
if (!foo)
g_warning ("oops");
with
g_warn_if_fail (a != NULL, "oops");
is nice but not too nice. Perhaps the problem is that this discussion
started
as a talk about g_assert and g_return_if_fail, which handle critical
errors and
performs some actions - killing the application or jumping out the
function.
So it's not clear if g_warn_if_fail() is comparable at all (I guess it's
just a totally
different thing). Would you write code like
g_warn_if_fail (something);
/* proceed like nothing bad happened */
If something happened bad enough to warn about it, then you probably also
need to perform some action - do something different in an if() branch, or
return from the function, or something. But then if you do have that
if(), then
you could just use g_warning().
(I am not stating that g_warn_if_fail() is bad or not needed, just
trying to
understand what exactly it's for)
Best regards,
Yevgen
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]