Es gibt sehr wenige Fälle, in denen Sie except:
verwenden möchten. Dadurch jede Ausnahme erfasst, die schwer zu debuggen sein kann, und es fängt Ausnahmen SystemExit
und KeyboardInterupt
einschließlich, die Ihr Programm ärgerlich machen kann ..
Am einfachsten zu verwenden, würden Sie urllib2.URLError
fangen:
try:
urllib2.urlopen("http://example.com", timeout = 1)
except urllib2.URLError, e:
raise MyException("There was an error: %r" % e)
folgendes sollte den spezifischen Fehler erfassen angehoben, wenn die Verbindung unterbrochen wird:
import urllib2
import socket
class MyException(Exception):
pass
try:
urllib2.urlopen("http://example.com", timeout = 1)
except urllib2.URLError, e:
# For Python 2.6
if isinstance(e.reason, socket.timeout):
raise MyException("There was an error: %r" % e)
else:
# reraise the original error
raise
except socket.timeout, e:
# For Python 2.7
raise MyException("There was an error: %r" % e)
Hinweis: [Der Parameter 'timeout' begrenzt weder die * Gesamt * Verbindungszeit noch die * Gesamt * Lese- (Antwortzeit).] (Http://stackoverflow.com/a/32684677/4279) – jfs