Les assertions remplacent elles les exceptions ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Les assertions remplacent elles les exceptions ?

par Hywan » 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.

par niuxe » 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

par Hywan » 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.

par Nagol » 08 mai 2009, 21:52

réponse: non

Les assertions remplacent elles les exceptions ?

par niuxe » 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. :)