bug-myserver
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [bug-myserver] [PROPOSAL] Exception management scheme


From: Giuseppe Scrivano
Subject: Re: [bug-myserver] [PROPOSAL] Exception management scheme
Date: Sun, 28 Mar 2010 22:50:01 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1.93 (gnu/linux)

Daniele Perrone <address@hidden> writes:

> I agree with you, we need a better exceptions management, I want just
> to point out that we need to be careful with the performance. It's
> quite known that the try-catch statement introduce an overhead, in my
> opinion we should keep in mind two simple principles:

yes, that is true.  I did some tests and I saw a try-catch is much
slower than an usual return statement; but let's put it in these terms,
in the worst case it happens only once for every request, and I think it
is faster than serving the request normally; the fastest response is an
error message :-)



> - keep the exception class hieararchy as  simple as possible, imho we
> should just manage unrecoverable exceptions (errors), and treat
> recoverable exceptional situations without use the exceptions
> mechanism, Keeping in mind this, the goal is  just to print an error
> message, with some information useful for the debug, and stop the
> execution.

hm... but imagine the code in this situation, you will check for errors
in two distinct code flows as:

try
{
  int err = foo ();
  if (err < 0)
    {
      /* Handle error.  */
    }
}
catch (...)
{
  /* Handle exception.  */
}

isn't it too ugly? :-)



> -  in the exception fall use the try catch statement  as late as
> possible. This should reduce the overhead over the system.

the cost of this approach is to have less precise error messages and I
am not sure it has an additional cost, unless you are going to re-throw
the exception again to the upper level.  Is there any benchmark showing
how "as late as possible" is a better choice than the "as precise as
possible" one?

Cheers,
Giuseppe




reply via email to

[Prev in Thread] Current Thread [Next in Thread]