Moteur d'erreurs

muqaddarmuqaddar Administrateur
07:40 modifié dans API AppKit #1
Salut,

Je me demandais comme vous procédiez, vous, les vieux de la vieille du Cocoa, ceux qui passent leurs journées à  se malaxer dans la pâte à  cacao, pour gérer tous les messages d'erreurs possibles de votre application ?

Vous créez une classe pour cela ou une categorie, avec une méthode, vous lui envoyer un code Erreur à  chaque fois ? Quelle est la meilleure façon de procéder, dites moi tout !  o:)

Réponses

  • odjauodjau Membre
    07:40 modifié #2
    Je ne suis pas un "vieux de la vieille du Cocoa"  :'( , mais en 4 ans de développement LabVIEW dans une équipe de 10 développeurs, je sais que la gestion d'erreurs, c'est comme les questions de religion ou de politique  :-\
    Je ne sais pas si c'est spécifique à  LabVIEW, et je serai donc content de savoir comment font nos "vieux"  ;D ;D

    @+
  • nucleusnucleus Membre
    novembre 2004 modifié #3
    Personnellement je suis pour l'utilisation d'exceptions spécifiques pour la gestion des erreurs..

    Une méthode ne doit jamais retourner de code d'erreur ou de valeur spéciale (nil, -1..)
    En cas d'erreur une exception est levée, il n'y a pas à  faire un "if( retour < = 0 ) etc..." et toute la gestion d'erreur se trouve dans les "@catch';

    Cela implique au moins une classe spécifique d'exception, et dans le cas de plusieurs couches/layer/framework, il y au moins une classe d'exception spécifique à  chaque couches/layer/framework.
    Les exceptions d'une couche N ne doit pas arriver dans une couche de niveau N+2, il est de la responsabilité de la couche N+1 d'intercepter cette exception et de la traiter et éventuellement lui donner une "valeur ajoutée" (un message qui ait une signification pour la couche N+1) en levant une autre exception (qui conservera une réference vers la première exception qui l'a causé)

    Ex:
    Couche 1: gestion IO, ouvertures de fichiers
    Couche 2: gestion de blocs (images, texte, graphique..)
    Couche 3: gestion de document composés de blocs

    Une exception dans la couche 1 pourrait être "impossible de créer un fichier sur /Volumes/MonCDROM"
    La couche 2 l'intercepte et leve une exception "impossible de sauvegarder le graphique 'photo de l'équipe'"
    La couche 3 l'intercepte et affiche à  l'utilisateur "Impossible de sauvegarder le document" (peut aussi lever une exception "impossible de sauvegarder le document" pour la scriptabilité)

    Ainsi dans les couches de haut niveau, on n'a que des erreurs de haut niveau et en même temps on peut remonter à  la cause initiale de l'erreur: Pa pu sauvegarder le document, car le bloc "photo de l'équipe" pose problème, car l'application n'a pu écrire sur le disque MonCDROM

    Par contre j'ai consience que c'est pas vraiment une approche courante pour Objective-C, étant donné que la gestion des exception "mature" est plutôt récente et que ce n'est pas aussi naturel qu'en Java (ou là  il n'y a pas à  tortiller du cul) ou en C++ moderne

Connectez-vous ou Inscrivez-vous pour répondre.