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