Re: try, finally

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

 



On Thu, Mar 20, 2008 at 10:36 PM, me22 <me22.ca@xxxxxxxxx> wrote:
> On Thu, Mar 20, 2008 at 10:10 PM, Jason Cipriani
>
> <jason.cipriani@xxxxxxxxx> wrote:
>
> > On Thu, Mar 20, 2008 at 8:23 AM, John Love-Jensen <eljay@xxxxxxxxx> wrote:
>  >  >  In my projects, throwing an exception mean "the application is about to
>  >  >  terminate."
>  >  >
>  >  >  That's using the exception mechanism at the extreme of conservative
>  >  >  programming with exceptions.
>  >  >
>  >  >  Assuming you use exceptions with less draconian policy, the exception
>  >  >  mechanism is not for using as normal flow control.  It really means an
>  >  >  exceptional situation, outside of the normal flow control.
>  >  >
>  >  >  For normal flow control -- such as handling predictable, common error
>  >  >  conditions -- you should use return codes.
>  >
>  >  It seems that the root of any disagreement is what kinds of errors
>  >  we'd prefer to represent with exceptions. You and Ted would use them
>  >  for rare, fatal error conditions, similar in spirit to machine
>  >  exceptions such as access violations and invalid instructions. I would
>  >  use them for more common errors such as invalid user input, missing
>  >  files, network errors, etc. I have a hunch nobody is going to be
>  >  having a change of heart any time soon. :-) One thing that I have
>  >  often noticed, incidentally, is that the longer a programmer has been
>  >  programming before C++, the more they prefer error codes to
>  >  exceptions.
>  >
>
>  Personally, I think that if something can't happen, like a divide by
>  zero, is a case for an assert, not an exception.  Leave them in the
>  release if you want, but better, fix them!
>
>  I prefer using exceptions for things that you'd rather never happened,
>  and if everything does perfectly, never will happen.  (Which also
>  means that their performance doesn't matter.)  Especially when those
>  are the kinds of things that can rarely be handled locally.  I like
>  having a fairly clean code path.
>
>  Also, exceptions thrown in constructors mean tighter invariants that
>  you just can't get with return codes.  2-phase construction is evil.
>
>  > [snip exceptionally long post that I didn't actually read, sorry :P ]

That's OK :-) I don't think I actually read it, either!

I did actually specifically mention that throwing exceptions from
constructors leads to tighter invariants. I think you pretty much said
everything I said in that last post, but a lot more efficiently.

Jason


>  >
>

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux