Les assertions remplacent elles les exceptions ?

Eléphant du PHP | 453 Messages

08 mai 2009, 21:43

Salut tout le monde,

Tout est dans le titre. Merci de me donner quelques précisions sur le sujet.


Bonne soirée à vous. :)
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia

ViPHP
ViPHP | 3300 Messages

08 mai 2009, 21:52

réponse: non
Fait du php depuis que ca existe ou presque :)

ViPHP
ViPHP | 4674 Messages

10 mai 2009, 19:24

Hey :),

Les exceptions sont un mécanisme d'erreur plus souple que les erreurs natives de PHP (voir les constantes E_*). On peut avoir de l'héritage, des méthodes etc. car ce sont des objets. Elles sont accompagnées d'un système d'essai-capture (try-catch) etc.
Les assertions vérifient la vérité d'une expression, soit dit autrement : on vérifie qu'une expression est juste/vraie. Par exemple : is_bool($variable) est une assertion ; on vérifie qu'on a à faire à un booléen.

En général, les assertions sont utilisées dans le cadre de tests, et non pas d'erreurs d'exécution (à l'instar des exceptions).

Toutefois, le mécanisme d'assertion de PHP est très peu puissant. C'est un bon début, mais il n'est pas assez souple. Il a avantage de ne pas exécuter, ni même d'évaluer le code (sous forme de chaîne de caractères) passé en paramètre de la fonction assert(), sauf si une directive dans le php.ini le précise. C'est la seule fonction de PHP qui a ce comportement et on ne peut l'imiter sauf si on se fait notre propre compiliation ou module.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Eléphant du PHP | 453 Messages

11 mai 2009, 22:38

Salut Hywan,

Je te remercie de cette précision. Je m'étais embrouillé l'esprit entre les deux (assertions et exception). Si j'ai compris et ce que j'ai pu lire, cela permet à l'interpréteur de donner dès le départ une logique. ex :

Code : Tout sélectionner

$nombreNews = 10; assert($nombreNews >=0);
Bonne soirée à toi
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia

ViPHP
ViPHP | 4674 Messages

12 mai 2009, 09:46

$n = 10;
assert('$n < 0');
Si $n est supérieur ou égal à zéro, alors une erreur (warning) sera levée : Warning: assert(): Assertion "$n < 0" failed in … Tu peux détourner les erreurs assert_options() en utilisant l'option ASSERT_CALLBACK. Un exemple est donné dans le manuel de cette fonction.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).