[ASTUCE] Fonction NSAssert()

Eddy58Eddy58 Membre
03:35 modifié dans Vos applications #1
Je viens de découvrir cette fonction, qui permet de lever des exceptions. Sûrement que certains connaissent déjà , mais il est sûr aussi que certains ne connaissent pas, et si elle existe, c'est que ça peut servir dans certains cas au développement. :P
[tt]NSAssert(condition, NSString *description)[/tt]
Si la condition testée, qui normalement doit toujours être vraie s'avère fausse, alors une exception de type NSInternalInconsistencyException est levée, et un message d'erreur avec des infos sur la classe et la méthode (ou fonction) où cela s'est produit s'affiche dans le log, puis l'appli quitte avec un beau SIGTRAP. ;)
Exemple :
[tt]
NSAssert(value==5,@La valeur n'est pas égale a 5);
[/tt]

Réponses

  • amnesicamnesic Membre
    03:35 modifié #2
    C'est très pratique effectivement et mérite d'être plus utilisé. D'ailleurs on peut aussi lui faire passer des arguments genre :

    NSAssert1(value==5,@"La valeur n'est pas égale a 5 mais a %d",value);
    


    (NSAssert[1-5])
  • ClicCoolClicCool Membre
    03:35 modifié #3
    En effet NSAssert est bien utile :)

    De mon côté, je me servais 2 fois plus des assertions sous CodeWarrior qu'avec xCode en Objectic-Cocoa ... :(

    Le soucis est de gérer, après, l'exception qui est levée et là  j'avoue que j'ai pas le réflexe en obj-C. ... ;)
  • nucleusnucleus Membre
    03:35 modifié #4
    Pour moi une exception levée par une assertion n'est pas destinée à  être traitée (à  part lancer une application pour envoyer un rapport de bug).

    Les expressions testées devraient concerner l'intégrité des données, le respect des API.. afin de detecter des erreurs ou des insuffisance de programmation.

    Pour moi ca serait plutôt de l'ordre du Design by Contract..
Connectez-vous ou Inscrivez-vous pour répondre.