mon image

Un exemple commenté sur les exceptions

Yves Guidet (yves.guidet@gmail.com)

13/04/2017

Allons-y : d'abord une classe Verbe dont la méthode present lève une exception MauvaisVerbe si l'infinitif n'est pas en -er.

       1	#!/usr/bin/env python
       2	# -*- coding: iso-8859-1 -*-
       3	
       4	# écrire un script demandant un verbe en -er ou -ir et le conjuguant à la première personne du futur
       5	# reprendre la conjugaison au futur, mais à toutes les personnes
       6	# et au présent ?
       7	# classe Verbe
       8	
       9	pronoms = ('je', 'tu', 'il')
      10	
      11	# une exception de mon cru
      12	class MauvaisVerbe:
      13		pass
      14	
      15	class Verbe:
      16		def __init__(self, inf):
      17			self.inf = inf
      18	
      19		def present(self):
      20			deuxDerniersCarInfinitif = self.inf[-2:]
      21			if deuxDerniersCarInfinitif != 'er':
      22				raise MauvaisVerbe
      23			#	print 'deuxDerniersCarInfinitif = ', deuxDerniersCarInfinitif
      24			term = {'je' : 'e', 'tu' : 'es', 'il' : 'e'}
      25			rad = self.inf[:-2]	#	radical (on enlève la terminaison -er)
      26			for p in pronoms:
      27				print "{0} {1}{2}".format(p, rad, term[p])
      28	
      29		def futur(self):
      30			term = {'je' : 'ai', 'tu' : 'as', 'il' : 'a'}
      31			for p in pronoms:
      32				print "{0} {1}{2}".format(p, self.inf, term[p])
      33	
      34	if __name__ == "__main__":
      35		print 'lancer test-VerbeExc.py'

Ensuite un programme de test qui importe ce module en « attrapant » les éventuelles exceptions :

       1	#!/usr/bin/env python
       2	# -*- coding: iso-8859-1 -*-
       3	#	import Verbe
       4	
       5	from Verbe import *
       6	
       7	def essai(inf):
       8		try:
       9			print('essai : infinitif = {}').format(inf)
      10			v = Verbe(inf)
      11			v.present()
      12	
      13		except MauvaisVerbe:
      14			print '{} : mauvais groupe'.format(inf)
      15		except :
      16			print 'OVNI'	# exception autre que MauvaisVerbe
      17		finally:
      18			print 'fin du test pour {}'.format(inf)	# erreur ou non
      19	
      20	essai("programmer")
      21	essai("prendre")	# va se terminer en catastrophe
      22	essai("développer")	# pourtant ce test-là est bien exécuté

À l'exécution, cela donne :

  yves@dee:queue$ ./test-VerbeExc.py 
  essai : infinitif = programmer
  je programme
  tu programmes
  il programme
  fin du test pour programmer
  essai : infinitif = prendre
  prendre : mauvais groupe
  fin du test pour prendre
  essai : infinitif = développer
  je développe
  tu développes
  il développe
  fin du test pour développer



Retour à la page d'accueil

© Yves Guidet jeudi 9 juillet 2020, 09:48:17 (UTC+0200) (bella ubuntu, site printemps) yves.guidet@gmail.com