J'ai été sensibilisé au contrats avec SmartEiffel et Lisaac, et Mildred nous a jour secoué les méninges afin qu'on distingue ce qui relève du contrat pré et post, et des exceptions.
L'exemple que tu cites est de l'ordre du contrat et non de l'exception.
Amha (pour le moment), l'exception sert à gérer les erreurs externes qui perturbent le bon déroulement d'un programme : plus de place sur le disque, plus de mémoire, on arrive pas à établir ou à garder la connexion, etc...
Là, c'est une erreur interne du programme : certains des argument sont à Null.
C'est un contrat qui doit être posé pour péter s'il y a erreur.
En java, il y a assert, mais c'est pas hérité. Et on a pas de mot clé Old qui permet de comparer l'état d'un paramètre au début avec ce paramètre modifié en sortie.
Sur l'entorse à la théorie, là encore, c'est une histoire de contrats... au niveau de l'objet.
En Eiffel, l'invariant de classe http://en.wikipedia.org/wiki/Class_invariant permet de vérifier à tout moment que le contrat est respecté.
Je pense que ça peut apporter une solution au problème posé par Zul.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: Rien de transcendant dirait-on
Posté par Ontologia (site web personnel) . En réponse au journal Noop : encore un nouveau langage ou bien nouvelle génération de langage. Évalué à 4.
L'exemple que tu cites est de l'ordre du contrat et non de l'exception.
Amha (pour le moment), l'exception sert à gérer les erreurs externes qui perturbent le bon déroulement d'un programme : plus de place sur le disque, plus de mémoire, on arrive pas à établir ou à garder la connexion, etc...
Là, c'est une erreur interne du programme : certains des argument sont à Null.
C'est un contrat qui doit être posé pour péter s'il y a erreur.
En java, il y a assert, mais c'est pas hérité. Et on a pas de mot clé Old qui permet de comparer l'état d'un paramètre au début avec ce paramètre modifié en sortie.
Sur l'entorse à la théorie, là encore, c'est une histoire de contrats... au niveau de l'objet.
En Eiffel, l'invariant de classe http://en.wikipedia.org/wiki/Class_invariant permet de vérifier à tout moment que le contrat est respecté.
Je pense que ça peut apporter une solution au problème posé par Zul.
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker