OVH Cloud OVH Cloud

Exceptions en Python

11 réponses
Avatar
NonSenZ
Bonjour à tous,

J'essaie d'utiliser des exceptions dans une application python/GTK afin
que l'utilisateur final n'ait que des messages d'erreur dans des
fenêtres de dialogue, et non pas dans la console qu'il n'aura d'ailleurs
pas ouverte. Pour télécharger un fichier sur le web depuis mon
programme GTK, j'utilise les modules urllib et httplib.
Ma méthode de téléchargement commence ainsi :

def get_film_list(self):
#Try to connect, there could be errors
try:
conn = httplib.HTTPConnection(self.mcdomaine)
except:
alert = SimpleGladeApp("nszmoviecov.glade", "dialog1")
alertxt = u"Probl\u00E8me de connexion sur www.moviecovers.com"
alert.label11.set_text(alertxt)
return

Mais voilà, quand la connexion est coupée, l'exception n'est pas
déclenchée et j'ai un message d'erreur dans la console :

Traceback (most recent call last):
File "./nszgtkfilms.py", line 172, in on_telecharger1_activate
self.mvcov1.get_film_list()
File "/home/nonsenz/python/nszgtkfilms/moviecovers.py", line 34, in get_film_list
conn.request("GET",self.mctxtpath)
File "/usr/lib/python2.3/httplib.py", line 721, in request
self._send_request(method, url, body, headers)
File "/usr/lib/python2.3/httplib.py", line 742, in _send_request
self.endheaders()
File "/usr/lib/python2.3/httplib.py", line 715, in endheaders
self._send_output()
File "/usr/lib/python2.3/httplib.py", line 600, in _send_output
self.send(msg)
File "/usr/lib/python2.3/httplib.py", line 567, in send
self.connect()
File "/usr/lib/python2.3/httplib.py", line 535, in connect
socket.SOCK_STREAM):
socket.gaierror: (-3, '\xc3\x89chec temporaire dans la r\xc3\xa9solution du nom')

Ok, connexion coupée donc pas de résolution DNS, mais pourquoi mon
exception ne fonctionne-t-elle pas ?
Je fais sans doute une erreur grossière, mais je ne vois pas laquelle...

--
NSZ

1 réponse

1 2
Avatar
NonSenZ
Le Tue, 01 Nov 2005 22:33:39 +0100, Rémi a écrit :

Dans ta classe TaClasse, tu ne raise que des classes spécialisées
d'exception, par contre tu peux catcher une classe générique et ainsi
traiter l'ensemble de tes exceptions qui se produisent sur ta classe.
L'orientation objet est aussi importante à mettre sur les exceptions,
que sur le reste de l'application, malheureusement ce n'est pas toujours
fait...

J'espère être assez claire, pas évident à expliquer.

Voilà en espérant que cela t'aide.
---

Oui oui, beaucoup. Je suis preneur de ce genre de savoir-faire qu'on ne
trouve pas toujours dans les livres !

Merci !

--
NSZ

1 2