try blocks in Python vs. C++

David Abrahams david.abrahams at rcn.com
Thu Sep 5 22:05:46 EDT 2002


"David LeBlanc" <whisper at oz.net> wrote in message
news:mailman.1031270709.27012.python-list at python.org...
> I think the biggest reason why try blocks aren't suggested for use in C++
is
> that they increase code size substantially (as do some other nice
features).

That's not a very good generalization. C++ implementations vary
substantially on the over (and under-) heads implied by exception-handling
constructs.

One reason you might want to avoid try blocks is that generally you want to
do cleanup unconditionally and rethrow the exception unmodified, and C++ has
no "finally" construct. Usually it works a lot better to use destructors of
local objects for this sort of thing, since you can re-use them and you
can't forget to "throw;" at the end.

BTW, saying "Stroustrup's C++ Book" isn't very specific (he has several),
and early editions of TC++PL contained some bad advice about C++ EH. See the
downloadable Appendix E at http://www.research.att.com/~bs/3rd_safe0.html
for some good advice.


> Try...except is good practice in Python IMO.

Yeah, it's a completely different story in Python:

    Python has 'finally'

    __del__ methods don't execute as the stack is unwound
    (whereas C++ destructors do)

    throwing an exception to deal with ordinary conditions
    (e.g. StopIteration) is common, since unlike most C++
    implementations throwing an exception is no more
    expensive in Python than returning from a function.

-----------------------------------------------------------
           David Abrahams * Boost Consulting
dave at boost-consulting.com * http://www.boost-consulting.com

>
> > -----Original Message-----
> > From: python-list-admin at python.org
> > [mailto:python-list-admin at python.org]On Behalf Of Roy Smith
> > Sent: Thursday, September 05, 2002 16:54
> > To: python-list at python.org
> > Subject: try blocks in Python vs. C++
> >
> >
> > I'm reading Stroustroup's C++ book, and came upon a piece of advice to
> > avoid using try blocks.  I use try blocks a lot in Python and gather
> > it's common practice among pythonistas.
> >
> > Is there something fundamentally different about try blocks in Python
> > and C++ which makes them more attractive to use in one vs. the other?
> > On the surface, they appear to be virtually identical in just about
> > every respect.  Is it simply a cultural difference?  Or just the
> > author's own personal style?
> > --
> > http://mail.python.org/mailman/listinfo/python-list






More information about the Python-list mailing list