Tempo wrote: > Hello. I am getting the error that is displayed below, and I know > exactly why it occurs. I posted some of my program's code below, and if > you look at it you will see that the error terminates the program > pre-maturely. Becasue of this pre-mature termination, the program is > not able to execute it's final line of code, which is a very important > line. The last line saves the Excel spreadsheet. So is there a way to > make sure the last line executes? Thanks in advanced for all of the > help. Thank you. > > > Error > #### > > IndexError: list index out of range > [snip]
Hi, Tempo, nice to see xlrd getting some usage :-) Are you sure that you *really* want to save a spreadsheet written by your buggy program??? It is better to fix errors, rather than ignore them. However, as you asked how: To ensure that cleanup code is executed no matter what happens, use try/except/finally as in the following example. HTH, John C:\junk>type tempo.py import sys def main(n): return (10 ** n) / n try: try: print "executing the application ..." n = int(sys.argv[1]) if n < 0: # simulate something nasty happening ... import nosuchmodule else: x = main(n) print "app completed normally: %r" % x except KeyboardInterrupt: # need this to escape when n is large print "kbd interrupt ...." raise except ZeroDivisionError: print "doh!" raise finally: # code to be executed no matter what happens print "finally ... cleaning up" C:\junk>tempo.py 0 executing the application ... doh! finally ... cleaning up Traceback (most recent call last): File "C:\junk\tempo.py", line 14, in ? x = main(n) File "C:\junk\tempo.py", line 4, in main return (10 ** n) / n ZeroDivisionError: integer division or modulo by zero C:\junk>tempo.py -1 executing the application ... finally ... cleaning up Traceback (most recent call last): File "C:\junk\tempo.py", line 12, in ? import nosuchmodule ImportError: No module named nosuchmodule C:\junk>tempo.py 3 executing the application ... app completed normally: 333 finally ... cleaning up C:\junk>tempo.py 10000000000 executing the application ... kbd interrupt .... finally ... cleaning up Traceback (most recent call last): File "C:\junk\tempo.py", line 14, in ? x = main(n) File "C:\junk\tempo.py", line 4, in main return (10 ** n) / n KeyboardInterrupt C:\junk> -- http://mail.python.org/mailman/listinfo/python-list