Difference between revisions of "CSC111 Exercises with Exceptions: try/except"
(→Code in need of try/except statements) |
(→Code in need of try/except statements) |
||
Line 113: | Line 113: | ||
sum = 0 | sum = 0 | ||
sumOfPairs = [] | sumOfPairs = [] | ||
− | + | for i in range( len( L ) ): | |
− | + | try: | |
− | sumOfPairs.append( L[i]+L[i+1] ) | + | sumOfPairs.append( L[i]+L[i+1] ) |
− | + | except IndexError: | |
− | + | continue | |
+ | except TypeError: | ||
+ | continue | ||
+ | |||
print( "sumOfPairs = ", sumOfPairs ) | print( "sumOfPairs = ", sumOfPairs ) | ||
Line 133: | Line 136: | ||
def main(): | def main(): | ||
− | example1() | + | #example1() |
− | L = [ 10, 3, 5, 6, 9, 3 ] | + | #L = [ 10, 3, 5, 6, 9, 3 ] |
+ | #example2( L ) | ||
+ | |||
+ | L = [ 10, 3, None, 6, 9, 3 ] | ||
example2( L ) | example2( L ) | ||
+ | |||
+ | #open( "doesNotExistYest.txt", "w" ).close() | ||
− | + | #printUpperFile( "doesNotExistYest.txt" ): | |
− | |||
− | |||
− | printUpperFile( "./Dessssktop/misspelled.txt" ) | + | #printUpperFile( "./Dessssktop/misspelled.txt" ) |
main() | main() |
Revision as of 09:15, 4 April 2014
--D. Thiebaut (talk) 09:05, 2 April 2014 (EDT)
The exercises below deal with protecting Python code that might crash with try/except statements to make the program robust.
Code in need of try/except statements
- The program below is not very robust. We can easily make it crash.
- Observe each function and see how to make it fail, or see why it will fail the way it is called
- Make the program crash. Register the XXXXError that is generated. For example, if the output of the crash looks like this:
Traceback (most recent call last): File "/Users/thiebaut/Desktop/except0.py", line 29, in <module> main() File "/Users/thiebaut/Desktop/except0.py", line 27, in main example3( [ 10, 3, 5, 6 ] ) File "/Users/thiebaut/Desktop/except0.py", line 18, in example3 sum = sum + L[i] IndexError: list index out of range
- what you are interested in is IndexError. This is the exception you want to guard your code against.
try:
........
........
except IndexError:
.........
- Verify that you have made your functions more robust to erroneous input/data.
Code
def example1():
for i in range( 3 ):
x = int( input( "enter a number: " ) )
y = int( input( "enter another number: " ) )
print( x, '/', y, '=', x/y )
def example2( L ):
print( "\n\nExample 2" )
sum = 0
sumOfPairs = []
for i in range( len( L ) ):
sumOfPairs.append( L[i]+L[i+1] )
print( "sumOfPairs = ", sumOfPairs )
print( "sumOfPairs = [", ",".join( [str(k) for k in sumOfPairs] ),"]" )
def printUpperFile( fileName ):
file = open( fileName, "r" )
for line in file:
print( line.upper() )
file.close()
def main():
example1()
L = [ 10, 3, 5, 6, 9, 3 ]
example2( L )
example2( [ 10, 3, 5, 6, "NA", 3 ] )
example3( [ 10, 3, 5, 6 ] )
printUpperFile( "doesNotExistYest.txt" )
printUpperFile( "./Dessssktop/misspelled.txt" )
main()