Python: Continue looping after exception

exception, loops, python

Solution

You could handle the exception where it is raised. Also, use a context manager when opening files, it makes for simpler code.

with open(hostsFile, 'r') as f:
    for line in f:
        line = line.strip()
        if not line:
            continue

        epoch = str(time.time())

        try:
            conn = urllib.urlopen(line)
            print epoch + ": Connection successful, status code for " + line + " is " + str(conn.code) + "\n"
        except IOError:
            print epoch + ": Connection unsuccessful, unable to connect to server, potential routing issues\n"

Problem

I have the following script (below). which will return the status code of URLs. It loops through a file and tries to connect to each host. Only problem is that it obviously stops looping when it reaches an exception. I have tried numerous things to put the how of it in a loop, but to no avail. Any thoughts? ``` import urllib import sys import time hostsFile = "webHosts.txt" try: f = file(hostsFile) while True: line = f.readline().strip() epoch = time.time() epoch = str(epoch) if len(line) == 0: break conn = urllib.urlopen(line) print epoch + ": Connection successful, status code for " + line + " is " + str(conn.code) + "\n" except IOError: epoch = time.time() epoch = str(epoch) print epoch + ": Connection unsuccessful, unable to connect to server, potential routing issues\n" sys.exit() else: f.close() ``` EDIT: I've come up with this in the mean-time, any issues with this? (i'm still learning :p )... ``` f = file(hostsFile) while True: line = f.readline().strip() epoch = time.time() epoch = str(epoch) if len(line) == 0: break try: conn = urllib.urlopen(line) print epoch + ": Connection successful, status code for " + line + " is " + str(conn.code) + "\n" except IOError: print epoch + "connection unsuccessful" ``` Thanks, MHibbin

Original source