2009-10-12 6 views
0

Donc, ma classe prend des données et le fait, retournant un message d'erreur si quelque chose s'est mal passé. Que devrais-je faire la chaîne si tout s'est bien passé? nul? "1"? "D'ACCORD!"? "Succès"?Existe-t-il un bon message standard "tout s'est bien passé" dans une méthode qui renvoie des erreurs de chaîne?

Veuillez appuyer votre réponse.

+4

"Erreur: réussite!" – aviraldg

+1

jeter une exception détaillant "succès" –

+0

Oui, partenaire, nous l'avons fait! Prenez une bière et célébrons-la! –

Répondre

2

Les codes de retour standard Unix utilisent '0' comme OK - par analogie, il est souvent recommandé d'utiliser une chaîne vide (longueur 0), au moins dans les langues où vous pouvez traiter la valeur "" fausse ".

Par exemple, en Perl: if ($error = my_method_call()) { print "Failed: $error\n" }

Dans une langue où il n'y a pas une telle implication (utilisation « » comme faux), une chaîne peut être choisi comme « OK », aussi longtemps qu'il est évident et lisible ("OK "correspond à la facture).

+0

merci pour les détails spécifiques au système – BigOmega

1

Les méthodes ne doivent jamais renvoyer d'erreurs de chaîne. Ils sont trop sujettes aux erreurs et sont plus coûteux que l'alternative évidente, renvoyant des codes entiers, que vous pouvez traduire en constantes descriptives et avoir une seule méthode qui traduit ces codes en chaînes. Si vous utilisez des codes d'erreur pour les imprimer (ou les enregistrer), il peut être utile d'utiliser des chaînes, mais rien ne vous empêche d'imprimer ou de consigner l'erreur dans la méthode d'erreur elle-même. renvoyer un code d'état défaillant à l'appelant.

Si vous utilisez des codes d'erreur de chaîne pour vérifier en interne dans le code pour des conditions différentes, les chaînes sont une douleur:

rv = some_function(); 
if (rv == "The file could not be read") { 
    take_corrective_action(); 
} 

A propos, y compris les détails dans le code d'erreur, l'appelant (en général) a les détails et peut composer le message d'erreur complet:

rv = read_data(FILE); 
if (rv == READ_PERMISSION_ERROR) { 
    log("The file " + FILE + " could not be read. You don't have permissions"); 
} 
+2

Si le message d'erreur est personnalisé pour inclure les détails de ce qui a causé une erreur ("Impossible de lire le fichier" vs "Impossible de lire le fichier/tmp/none car il n'est pas lisible"), il est difficile d'utiliser des entiers – DVK

+0

Modifié pour résoudre ce problème. –

Questions connexes