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
- A java exception has occurred - Forum Logiciels
- Message D'erreur A Java has exception has occured ! - Forum Minecraft
- A java exception has occurred (( minecraft.serv )) - Forum Minecraft
- Erreur d'application : une exception côté client s'est produite (consultez la console du navigateur pour plus d'informations). - Forum Google Chrome
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: