web-dev-qa-db-fra.com

Quelle est la différence entre Error et NSError dans Swift?

Je crée une bibliothèque qui devrait renvoyer des erreurs donc je me demande laquelle utiliser à mes fins.

PDATE: Je devrais clarifier, le résultat retourné proviendra d'un appel asynchrone donc j'ai besoin d'informer l'utilisateur s'il y a eu une erreur et je voudrais savoir quel type je devrais utiliser Error ou NSError.

30
Wilson

NSError est un cacao classe

Un objet NSError encapsule des informations sur une condition d'erreur d'une manière extensible orientée objet. Il se compose d'un domaine d'erreur prédéfini, d'un code d'erreur spécifique au domaine et d'un dictionnaire d'informations utilisateur contenant des informations spécifiques à l'application.

Error est un Swift protocole auquel les classes, structures et énumérations peuvent et NSError sont conformes.

Un type représentant une valeur d'erreur pouvant être levée.

Tout type qui déclare la conformité au protocole Error peut être utilisé pour représenter une erreur dans le système de gestion des erreurs de Swift. Étant donné que le protocole Error n'a pas d'exigences propres, vous pouvez déclarer la conformité sur tout type personnalisé que vous créez.

Les parties citées sont les descriptions des sous-titres dans la documentation.

Le système de gestion des erreurs de Swift est le modèle pour détecter les erreurs à l'aide de try - catch. Il nécessite que l'erreur à détecter soit thrown par une méthode. Ce modèle est beaucoup plus polyvalent que la gestion des erreurs traditionnelle utilisant des instances NSError. Si vous prévoyez pas d'implémenter try - catch vous n'avez en fait pas besoin du protocole Error.

37
vadian