Je cale sur les erreurs d'URL... ENCORE - Python - Programmation
Marsh Posté le 08-06-2010 à 22:55:45
erwan83 a écrit : mon code :
|
L'erreur se situe ligne 45 sur l'instruction "lien = opener.open(request).read()"
Ca te retourne une exception " "HTTPError" ("exeption" c'est le terme pour désigner l'erreur)
erwan83 a écrit : Et je ne sais pas où coller un try / except dans ce code. |
Pour bien coller un try/except, il faut essayer de trouver l'opération la plus atomique possible qui va décider si ton traitement réussit ou échoue. Cette opération peut être sur 1, 2 ou 12 instructions.
En fait, un try/except va te garantir que tout ce que tu mets dedans sera contrôlé. Inversement, si tu mets 3 instructions et que l'une plante, tu pourras pas gérer laquelle.
Pour en revenir à ton code, je pense que tu peux le faire ainsi
Code :
|
Marsh Posté le 09-06-2010 à 10:53:33
Merci, en fait j'ai laissé tomber httperror qui était trop complexe à gérer :
Code :
|
alors je ne sais pourquoi mais ça marche.
bizarre non, des problemes d' I/O sur du HTTP ?
si il faut que je me cogne les 50 et quelques codes d'erreur HTTP, ça me décourage.
Marsh Posté le 09-06-2010 à 19:02:14
erwan83 a écrit : Merci, en fait j'ai laissé tomber httperror qui était trop complexe à gérer :
|
Je sais pas pourquoi urlopen te renvoie un IOError. Mais tu peux trouver pourquoi avec un truc de ce style
Code :
|
Si l'exception est levée, t'auras l'objet associé qui sera récupéré par la variable "eObject". Et en l'affichant, t'auras le message d'erreur qui va avec. Comme ça tu pourras voir pourquoi le IOError.
De plus, t'es pas obligé de mettre l'exception précise. Tu peux laisser en blanc. Style...
Code :
|
Tu peux aussi capturer n exceptions d'affilée. Style
Code :
|
Quelle que soit l'exception qui correspond à la liste citée, elle sera capturée...
Marsh Posté le 09-06-2010 à 19:02:57
essayez d'ouvrir ça avec python...
chez moi ça tourne en boucle sans jamais ramener d'erreur, de même sous FF ou IE
http://www.boutique-habitatmalin.com
Marsh Posté le 09-06-2010 à 19:04:33
ReplyMarsh Posté le 10-06-2010 à 22:11:12
erwan83 a écrit : essayez d'ouvrir ça avec python... |
Chez-moi, aucun problème
Code :
|
Marsh Posté le 10-06-2010 à 22:22:57
fichtre !
Bon, ceci étant, je me suis permis de modifier le code du fichier Urllib2 et depuis ça marche tout seul :
Code :
|
De ce fait, Urllib2 me renvoie les erreurs et n'impacte plus mon code principal !!!
Pour l'URL du dessus ça devait planter lorsque j'ai posté car ça marche aussi chez moi !
Marsh Posté le 10-06-2010 à 23:08:21
erwan83 a écrit : fichtre !
|
Euh, modifier un fichier de librairie officielle c'est tout sauf prudent.
1) ça rend le code inmaintenable
2) si la librairie est réinstallée, le code pffuiiit...
N'y avait-il pas moyen de faire autrement ??? Par exemple mettre un try dans ton code là où t'appelles urlopen plutôt que mettre le try dans la fonction urlopen elle-même ???
Marsh Posté le 11-06-2010 à 00:04:27
ben bizarrement non car je me suis retrouvé avec des erreurs que visiblement je n'arrivais pas à gerer du style connection reset by peer ou autres bizarreries qui ne portaient pas de nom d'erreur clairement définies
et là ça me sort ça :
Code :
|
Marsh Posté le 08-06-2010 à 18:12:20
mon code :
mon erreur :
Problème : Python peut me retourner toute une batterie d'erreurs (Not found, Acces interdit etc etc etc)
Et je ne sais pas où coller un try / except dans ce code.
Message édité par erwan83 le 09-06-2010 à 19:02:13
---------------
http://www.ypikay.com