Re: What do you think about the code?
- From: Ian Collins <ian-news@xxxxxxxxxxx>
- Date: Tue, 04 Jul 2006 08:29:02 +1200
goose wrote:
Ian Collins wrote:In the context they were presented, you could get a way with a goto.
goose wrote:
Do you program in a language other than C? Do you use exceptions
in those languages? Exceptions are just another form of gotos,
only its "goto that location and tell the code there that this
happened" and not just "goto the error location, it will
unconditionally execute code to handle errors". No one ever seemed
to have trouble refactoring code which generated excetpions.
I do, several. As you say in the next paragraph, exceptions provide a
structured way of passing control. They are /not/ another form of goto,
they do a lot more than simply jumping to another location. There are
Well, the issue going back and forth here is not "spurious usage
of gotos" is it? All the examples posted here were reasoned
and informed uses of gotos to *specifically* handle errors. I'd
hardly call the usage of gotos as we've seen here in this thread
/unstructured/. All were written to simulate exceptions in a language
which doesn't have built in support for exceptions.
Things beak down when inner loops are extracted into functions.
Exceptions are a structured method for reporting errors; can you
disagree with that statement?
I haven't, if you read what I posted, you'll see I agreed.
Using gotos to simulate exceptions would be as close as oneWithin a fixed scope, but you still identify the error handler (the
can get to exceptions in C.
label) at the point of error, where throwing an exception does not.
I think you countered your own argument when you suggested exceptions
can be implemented with longjump, which is closer than goto.
True, but we were talking about goto.
plenty of techniques for writing exception safe code. I can't think of
any for writing goto safe code!
If exceptions simply did a longjump, people wouldn't use them.
Fair enough; longjmp cannot call destructors automatically like
C++/Java/etc exceptions can but it *can* unwind the stack.
The jmp_buf initialised with setjmp only gets invalidated when the
function scope where setjmp is called returns[1]. I'd assume that,
with language support for destructors (variables going out of
scope automatically get a certain function called), exceptions
can be implemented with longjmp.
--
Ian Collins.
.
- Follow-Ups:
- Re: What do you think about the code?
- From: goose
- Re: What do you think about the code?
- References:
- Re: What do you think about the code?
- From: Richard Heathfield
- Re: What do you think about the code?
- From: Andrew Poelstra
- Re: What do you think about the code?
- From: Ian Collins
- Re: What do you think about the code?
- From: Frederick Gotham
- Re: What do you think about the code?
- From: Ian Collins
- Re: What do you think about the code?
- From: goose
- Re: What do you think about the code?
- From: Ian Collins
- Re: What do you think about the code?
- From: goose
- Re: What do you think about the code?
- Prev by Date: Re: convert a string to all-lowercase string
- Next by Date: Re: OT: mid/bottom posting (was Re: 'clear' shell command in Makefile)
- Previous by thread: Re: What do you think about the code?
- Next by thread: Re: What do you think about the code?
- Index(es):
Relevant Pages
|