On 05/10/15 18:46, richard kappler wrote:
I'm reading up on exception handling, and am a little confused. If you have
an exception that just has 'pass' in it, for example in a 'for line in
file:' iteration, what happens? Does the program just go to the next line?

Yes, in your example it would ignore the exception and just move on to the next line. Using continue would do the same and be more explicit.
If you do want to stop the loop use break.

EX:

for line in file:
     try:
         do something
     except:
         pass

I know (so many of you have told me :-) that using pass is a bad idea,

Not necessarily, pass is fine in many situations.
The only problem is in situations where it's not
needed at all - then its better to just simplify
the construct. For example:

if some_test():
   do_something()
else:
   pass

is better written as just

if some_test():
   do_something()

But something like:

class MyNewException(Exception): pass

is absolutely OK.

how else do you skip the current line if the 'try' can't be done, and go on
to the next line exiting the program with a trace error?

That last sentence confused me. If you use pass (or continue)
you will NOT get any trace error. If you want to store the
error to report it at the end then it's quite a bit more work,
you would need something like:

errors = []
for line in file:
   try:
     process(line)
   except SomeError as e:
      errors.append((line,e))

if errors:
   for e in errors:
      display_error(e)

where display_error() is an exercise for the student :-)

hth
--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.amazon.com/author/alan_gauld
Follow my photo-blog on Flickr at:
http://www.flickr.com/photos/alangauldphotos


_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to