2009-04-22 9 views
0

J'étais sur le point de refactoriser ce code VB6 suivant (écrit par quelqu'un d'autre).Devinez cette étiquette goto

Public Function GetValue(ID As Long) As Boolean 
    On Error GoTo eh 

    '' ... DAL Logic... 

eh_Exit: 
    On Error GoTo 0 
    Exit Function 
eh: 
    Resume eh_Exit 
End Function 

Que pensez-vous l'intention de l'auteur original était pour le label eh?

probablement « eh, quelque chose est arrivé? » ...

Je veux le rendre lisible sans avoir à me penser comme maintenant ...

+0

Merci pour la réponse .. Je suis .. maintenant Continuons ... – Sung

Répondre

13

gestionnaire d'erreurs? Je ne sais pas pourquoi il n'y a pas, vous le savez, erreur de gestion là-bas.

+0

me tabassaient de 10 secondes. –

+0

@Ryan: Je pense que vous avez raison ... Après avoir regardé le code pendant une longue période, je n'ai pas pensé à "Error Handler" ... Merci. @Paul: +1 pour deviner;) – Sung

4

"*** E *** *** H *** rror Andler"

Mon premier emploi C, chaque fonction avait une étiquette vers le bas près du fond appelé "Err_Exit". Toute condition d'erreur qui n'a pas pu être gérée localement a été détectée et gérée avec "if (error ...) goto err_exit;". Toutes nos fonctions ont également retourné soit 0 en bon état, soit -1 en cas d'erreur. conception

En théorie, Err_Exit était là pour faire un peu de nettoyage, mais en pratique, la plupart de nos fonctions comme terminé

return 0; 
err_exit: 
    return -1; 
+0

Joel, je ne sais pas pourquoi vous avez mis en majuscule mon "gestionnaire d'erreur" puisque l'étiquette est "eh" et non "EH"? –

+0

@Joel: Ah, Joel .. belle touche. – Sung

0

« Intéressant ». Cela ressemble à un endroit où placer un point d'arrêt pendant le débogage, mais c'est créativement confus.

+0

Après avoir regardé l'écran pendant trop longtemps, de tels acronymes semblent m'énerver et je dois * penser * pour comprendre ce que cela signifie .. Donc je vais les changer tous à "ErrorHandler _" ... – Sung

+0

@ dance2die, vous pouvez aussi refactoriser la fonction. –

+0

@Daniel: Je suis dessus. – Sung

0

Je risque fort de deviner que c'est un motif qui permet au code de la fonction de se terminer et de ne pas avoir à sauter une logique de gestion des erreurs, mais aussi de terminer gracieusement si le rédacteur n'a pas de sortie Déclaration de fonction

Ainsi, vous pouvez simplement coller tout depuis eh_Exit dans n'importe quelle fonction sans avoir à changer le code restant dans cette fonction.