Exception dans urllib.request.urlopen
Bonjour,
j'aimerai savoir comment connaitre les différentes exceptions qui existe dans une fonction en général.
Et plus particulièrement pour urllib.request.urlopen(
car j'ai une erreur quand urlopen n'arrive pas à ouvrir l'url
et je n'arrive pas à avoir l'exception
voici l'erreur
Traceback (most recent call last):
File "/usr/lib/python3.10/urllib/request.py", line 1348, in do_open
h.request(req.get_method(), req.selector, req.data, headers,
File "/usr/lib/python3.10/http/client.py", line 1282, in request
self._send_request(method, url, body, headers, encode_chunked)
File "/usr/lib/python3.10/http/client.py", line 1328, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "/usr/lib/python3.10/http/client.py", line 1277, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "/usr/lib/python3.10/http/client.py", line 1037, in _send_output
self.send(msg)
File "/usr/lib/python3.10/http/client.py", line 975, in send
self.connect()
File "/usr/lib/python3.10/http/client.py", line 941, in connect
self.sock = self._create_connection(
File "/usr/lib/python3.10/socket.py", line 824, in create_connection
for res in getaddrinfo(host, port, 0, SOCK_STREAM):
File "/usr/lib/python3.10/socket.py", line 955, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -3] Temporary failure in name resolution
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/bertrand/linux/script/updatedns3.py", line 21, in <module>
ip = url.urlopen("http://monip.outils-rezo.info/text").read().decode()
File "/usr/lib/python3.10/urllib/request.py", line 216, in urlopen
return opener.open(url, data, timeout)
File "/usr/lib/python3.10/urllib/request.py", line 519, in open
response = self._open(req, data)
File "/usr/lib/python3.10/urllib/request.py", line 536, in _open
result = self._call_chain(self.handle_open, protocol, protocol +
File "/usr/lib/python3.10/urllib/request.py", line 496, in _call_chain
result = func(*args)
File "/usr/lib/python3.10/urllib/request.py", line 1377, in http_open
return self.do_open(http.client.HTTPConnection, req)
File "/usr/lib/python3.10/urllib/request.py", line 1351, in do_open
raise URLError(err)
urllib.error.URLError: <urlopen error [Errno -3] Temporary failure in name resolution>
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/bertrand/linux/script/updatedns3.py", line 27, in <module>
except url.request.socket.timeout as e:
AttributeError: module 'urllib.request' has no attribute 'request'. Did you mean: 'Request'?
merci
Linux / Firefox 110.0
- Exception dans urllib.request.urlopen
- Appliquez à tous les paragraphes du document à télécharger, à l’exception des titres et des sous-titres, la mise en forme suivante : - Guide
- Erreur d'application : une exception côté client s'est produite (consultez la console du navigateur pour plus d'informations). - Forum Google Chrome
- Application error: a client-side exception has occurred while loading www.leboncoin.fr (see the browser console for more information). - Forum Réseaux sociaux
- A java exception has occurred ✓ - Forum Minecraft
- Plus a d'accès à mes annonces leboncoin - Forum Services en ligne
4 réponses
bonjour,
Sans ton code, cela n'est pas très clair. Tu veux dire que tu ne parviens pas à intercepter l'erreur avec un try/except?
oui j'ai déjà pas mal de except après mon try, mais ce sont des except trouvé à droite à gauche, mais j'aimerai trouvé tous ce qu'il existe (peut etre que c'est dans la librairie, ou dans un site référentiel)
voici mon try et mes except
try:
ip = url.urlopen("http://monip.outils-rezo.info/text").read().decode()
except HTTPError as error:
logging.error('HTTP Error: Data of %s not retrieved because %s\nURL: %s', name, error, url)
sys.exit()
except URLError as error:
if isinstance(error.reason, timeout):
print ("Timeout Error: Data not retrieved because %s\nURL: %s" % (error, url))
exit()
else:
print ("URL Error: Data not retrieved because %s\nURL: %s" % (error, url))
exit()
except url.socket.error as e:
print ("URLError : Une autre erreur avec le serveur : "+str(e))
exit()
except url.HTTPError as e:
print ("HTTPError : Le serveur n a pas pu repondre a la demande.")
print ('Code erreur : ', e.code)
exit()
except url.URLError as e:
print ("URLError : Nous n\'avons pas reussi a atteindre le serveur .")
print ("Code erreur : ", e.reason)
exit()
est-ce que toutes les exceptions sont ici ?
https://github.com/python/cpython/blob/3.11/Lib/urllib/error.py
il y aurait que 3 exceptions :URLError, HTTPError et ContentTooShortError
un exemple:
try: a=0/0 except Exception as e: print("oups",e)