Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python HTTP Exception Handling

I'm running a program that downloads files from a web sit. I've introduced one exception handling urllib.error.HTTPError, but now I'm getting from time to time additional errors that I'm not sure how to capture: http.client.IncompleteRead. Do I just add the following to the code at the bottom?

except http.client.IncompleteRead:

How many exceptions do I have to add to make sure the program doesn't stop? And do I have to add them all in the same Except statement or in several Except statements.

try:
   # Open a file object for the webpage 
   f = urllib.request.urlopen(imageURL)
   # Open the local file where you will store the image
   imageF = open('{0}{1}{2}{3}'.format(dirImages, imageName, imageNumber, extension), 'wb')
   # Write the image to the local file
   imageF.write(f.read())
   # Clean up
   imageF.close()
   f.close()

except urllib.error.HTTPError: # The 'except' block executes if an HTTPError is thrown by the try block, then the program continues as usual.
   print ("Image fetch failed.")
like image 210
gciriani Avatar asked Mar 22 '23 14:03

gciriani


1 Answers

You can add individual except clauses if you want to handle each exception type separately, or you could put them all in one:

except (urllib.error.HTTPError, http.client.IncompleteRead):

You can also add a generic clause that will catch anything not handled previously:

except Exception:

For more informative messages, you can print the actual exception that happens:

except Exception as x:
    print(x)
like image 63
Greg Hewgill Avatar answered Apr 20 '23 11:04

Greg Hewgill