Vidéo: Techtalk#13 - Ripple Motion - Promises iOS / Android - Olivier Tabone 2025
Dans Objective-C, les exceptions concernent des conditions inattendues dans votre programme. Tenez compte des éléments suivants lors de la création du code afin d'éviter les échecs dans vos applications iOS. Portez une attention particulière à:
-
Une instruction alloc échoue car votre système manque de mémoire.
-
Une mauvaise entrée pénètre dans votre programme causant (disons) une erreur de division par zéro.
-
Votre programme tente par erreur d'accéder à un tableau dont l'index est hors limites.
Les exceptions appliquent le principe orienté objet de la séparation des préoccupations qui est l'idée de diviser une application en composants distincts qui se chevauchent le moins possible dans la fonctionnalité. La valeur de la séparation des préoccupations simplifie le développement et la maintenance des programmes informatiques.
Lorsque les préoccupations sont bien séparées, des sections individuelles peuvent être développées et mises à jour indépendamment. Les exceptions automatisent également la propagation d'une condition inattendue au point où elle est gérée. Par conséquent, votre code n'est pas encombré d'instructions de gestion des exceptions, ce qui facilite l'écriture et la maintenance de votre code.
Objective-C étend C en fournissant quatre directives du compilateur pour la gestion des exceptions:
-
@try définit un bloc de gestion des exceptions (c'est-à-dire du code qui pourrait déclencher une exception).
-
@catch () définit un bloc de code pour gérer l'exception lancée dans le bloc @try. Le paramètre de @catch est l'objet d'exception lancé; C'est généralement un objet NSException.
-
@finally définit un bloc de code exécuté, qu'une exception soit levée ou non.
-
@throw renvoie une exception - un objet NSException ou, plus souvent, un objet appartenant à une sous-classe de NSException.
Le code suivant montre comment les exceptions peuvent être levées, interceptées et traitées dans un bloc @ try … @catch.
@try {printf ("Je sais que ça va échouer"); NSDictionary * emptyDictionary = [[NSDictionary alloc] init]; NSException * anException = [NSException exceptionWithName: @ "MyException" raison: @ "Just for grins" userInfo: emptyDictionary]; @throw anException;} @catch (exception NSException *) {NSLog (@ "Exception interceptée avec raison>% @
