URLError例外が発生したら、HTTPステータスコードを取得します。
私はこれを試しましたが、助けにはなりませんでした:
except URLError, e:
logger.warning( 'It seems like the server is down. Code:' + str(e.code) )
URLError
をキャッチした後はステータスコードを確認しないでください。たとえば、接続拒否エラーが発生した場合など、HTTPステータスコードがない場合に例外が発生する可能性があるためです。
HTTPError
を使用してHTTP固有のエラーをチェックし、次にURLError
を使用して他の問題をチェックします。
try:
urllib2.urlopen(url)
except urllib2.HTTPError, e:
print e.code
except urllib2.URLError, e:
print e.args
もちろん、エラーコードを印刷するだけでなく、もっと賢いことをしたいと思うかもしれませんが、アイデアは得られます。
このエラーが発生する理由がわかりません。 urllib2
を使用している場合、これが役立ちます。
import urllib2
from urllib2 import URLError
try:
urllib2.urlopen(url)
except URLError, e:
print e.code