Bonjour,
Je dois analyser des chaines de caractères correspondant à des trames de données. Les trames étant normalisées, je peux connaitre les positions de variables à récupérer dans la chaine. Ces chaines sont de longueurs variables et certaines variables de la chaine donnent la taille de ce qu'il y a derrière.
Lors de mon analyse, j'ai voulu jouer avec les exceptions. Voici un morceau de mon code :
Le problème est que, je cite la documentation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 # rsp est un indice calcule precedemment et verifie comme ne generant pas d'exception IndexError try: print "response", self.rawdata[rsp+2:rsp+4] self.dest_data_len = int(self.rawdata[rsp+2:rsp+4], 16) self.dest_data = self.rawdata[rsp+4:rsp+4+self.dest_data_len*2] self.dest_crc = self.rawdata[rsp+4+self.dest_data_len*2:rsp+4+self.dest_data_len*2+2] except IndexError: print "[Frame] Impossible d'analyser la reponse du destinataire"
et donc mes exceptions ne servent à rien si la chaine est plus petite que prévue. Comment contourner ce problème ? Je pourrais faire une tentative d'accès à l'indice maximum avant de lire la plage mais c'est quand même très contraignant... Auriez-vous une technique efficace à me proposer svp ?exception IndexError
Raised when a sequence subscript is out of range. (Slice indices are silently truncated to fall in the allowed range; if an index is not a plain integer, TypeError is raised.)
Merci d'avance !
Partager