Ouverture du parc des batignolles
A défaut du village olympique qui était prévu pour 2012, la ville de Paris à fait un bon gros parc dans le quartier des batignolles.
A l'intérieur on y trouve des espaces verts, des terrains de sport (basket,etc.) et surtout, ce qui personnellement m'intéresse un chouîlla plus, un "petit" skatepark. Pour l'instant il n'y a qu'une vaste air goudronnée avec une vague.

C'est super rigolo à skater. Je ne saurais que vous conseiller d'y passer. La courbe est un peu étrange. Tout petit rayon puis plan incliné. Le tout part du niveau du sol pour arriver à plus de 3 mêtres de haut. Ce qui est étrange c'est que le rayon de la courbe est le même quelque soit la hauteur.
Ce qui est bien c'est que, même si c'est une courbe, les streeteurs semble y trouver leurs compte. Si le reste des modules est aussi réussis, vas y avoir de quoi s'amuser :)
Les exceptions python
Les exceptions python sont toutes simple. Vous pouvez facilement créer les votre:
>>> class MonException(Exception):
... """ Une exception """
Puis les propager:
>>> raise MonException('Bouh !')
Traceback (most recent call last):
...
MonException: Bouh !
Ca, c'est la base. Mais il y a des trucs plus rigolo à faire. Par exemple garder la trace d'une suite d'exceptions:
>>> class MultiException(Exception):
... """ une exception contstitué de plusieurs autre """
... def __init__(self):
... Exception.__init__(self)
... self.data = []
... def __nonzero__(self):
... return self.data and True or False
... def __str__(self):
... return ', '.join(['%s: %s' % (e.__class__.__name__,str(e)) for e in self.data])
Et voila ce que cela donne à l'utilisation. On fait une boucle dans laquelle une ou plusieurs exceptions peuvent se produire:
>>> exceptions = MultiException()
>>> for i in [1, 3, 0, 7, 1, 0]:
... try:
... a = 2/i
... except Exception, e:
... exceptions.data.append(e)
Puis on propage notre exception si elle n'est pas vide:
>>> if exceptions:
... raise exceptions
Traceback (most recent call last):
...
MultiException: ZeroDivisionError: integer division or modulo by zero, ZeroDivisionError: integer division or modulo by zero
On voit bien ainsi que deux exceptions se sont produites et non une seule. On pourrait faire mieux. Par exemple conserver la pile de chaque exception, etc.
En fait, je n'ai rien inventé. C'est le principe utilisé par exemple dans Zope pour gérer la validation de formulaire (zope.app.form). Je trouve que c'est plutôt un bon concept. Après tout, une erreur de saisie c'est quelque chose qui engendre une erreur. Donc une exception :)