exceptions == errors?
Alexander Schmolck
a.schmolck at gmx.net
Mon Apr 7 20:16:06 EDT 2003
Mark Harrison <mh at pixar.com> writes:
> Are exceptions always considered errors, or there the same feeling
> as in C++ that exceptions can be used for non-error situations?
No. Yes: iterators raise an StopIteration exception to signal that there are
no more elements left. Thus
for x in container: print x
print "done"
will print xs until a StopIteration is raised by the iterator returned by
container's __iter__ method, at which point execution quietly continues with
the ``print "done"`` statement.
>
> I am asking because I am writing a network server that has the
> general outline
>
> while 1:
> read request
> process request
> send response
>
> So, I have the option to
>
> 1. embed the "send response" code in the request processing code
Sounds somehow bad.
>
> 2. Have the request processing code generate formatted responses
> that are returned to the main loop
>
> As is usually the case, adding robust error checking and reporting
> throws a kink into the works. I have to do a lot of exception
> wrapping in the request processing code in order to ensure that
> there are no code paths where an exception short-circuits a
> response generations.
>
> Therefore, I'm thinking of structuring the code like this:
>
> while 1:
> try:
> read request
> process request
> catch MyException,e:
> send response contained in e
> catch Exception,e:
> send "internal error" response
>
> Am I setting myself up for trouble if I follow this route?
> All advice gratefully received.
I don't fully understand your problem from your description, but maybe you
want some variation on this?
try:
# you'll likely want try: except: statements nested in here for error
# handling
read request
process request
# irrespective of whether an error occured send a response
finally:
send response
'as
More information about the Python-list
mailing list