Поймать исключение тайм-аута сокета

Я бы хотел поймать тайм-аут сокета (желательно в виде исключения) ... кроме urllib.error.URLError: может поймать его, но мне нужно различают неработающую ссылку и тайм-аут .... Если я извлечу , кроме urllib.error.URLError: , тайм-аут сокета не будет обнаружен, и сценарий завершится с ошибкой socket.timeout

import urllib.request,urllib.parse,urllib.error
import socket
import http
socket.setdefaulttimeout(0.1)


try:
    file2 = urllib.request.Request('http://uk.geforce.com/html://')
    file2.add_header("User-Agent","Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.29 Safari/525.13")
    file3 = urllib.request.urlopen(file2).read().decode("utf8", 'ignore')
except urllib.error.URLError: print('fail')
except socket.error: print('fail')
except socket.timeout: print('fail')
except UnicodeEncodeError: print('fail')
except http.client.BadStatusLine: print('fail')
except http.client.IncompleteRead: print('fail')
except urllib.error.HTTPError: print('fail')

print('done')
8
задан murgatroid99 23 August 2011 в 20:46
поделиться