Un NSAssert lèvera une exception quand il échoue. Donc NSAssert est là pour être court et facile à écrire et à vérifier toutes les hypothèses que vous avez faites dans votre code. Il n'est pas (à mon avis) une alternative à des exceptions, juste un raccourci. Si une assertion échoue alors quelque chose a terriblement mal tourné dans votre code et le programme ne doit pas continuer.
Une chose à noter est que NSAssert ne sera pas compilé dans votre code dans un communiqué, alors il est généralement utilisé pour les vérifications en cours de développement. J'ai effectivement tendance à utiliser une coutume d'affirmer macro qui est toujours active.
La fois de vous serait - @throw
votre propre NSException sont quand vous voulez certainement dans un communiqué de construire, et d'autres choses, comme les bibliothèques publiques/de l'interface lors de certains arguments sont invalides ou vous avez été appelés à tort. Notez qu'il n'est pas vraiment pratique courante de @catch
une exception et poursuivre l'exécution de votre application. Si vous essayez cela avec certains d'Apple bibliothèques standard (par exemple de Base de Données) de mauvaises choses peuvent arriver. Semblable à une assertion, si une exception est levée, l'application doit généralement mettre fin assez rapidement, car elle signifie qu'il y a une erreur de programmation, quelque part.
NSErrors doit être utilisé dans vos bibliothèques/interfaces pour les erreurs qui ne sont pas des erreurs de programmation, et qui peut être récupéré à partir de. Vous pouvez fournir des informations/codes d'erreur de l'appelant et qu'ils peuvent gérer l'erreur proprement, alerte l'utilisateur le cas échéant, et continuer l'exécution. Ce serait généralement pour des choses comme un Fichier n'est pas trouvé d'erreur ou de quelque autre erreur non fatale.