VB6 - Comment attraper exception ou une erreur lors de l'exécution
J'ai développé une application en VB6. Dans l'environnement du client, il soulève des erreurs d'exécution qui je ne peux pas reproduire sous débogueur. Est-il possible d'obtenir le suivi de pile ou de l'emplacement de l'erreur?
J'ai créé le fichier journal et
j'ai utilisé
Err.Description,Err.Source
mais il donne des valeurs vides.
S'il vous plaît aider moi.
my method(......
On Error GoTo Error_Handler
.........
Error_Handler :
writeToLogFile(Err.Source,Err.Description)
Vous le savez sans doute, mais juste au cas où, VB6 est complètement non pris en charge à compter de Mars 2008: msdn.microsoft.com/en-us/vbrun/ms788707.aspx je devine que vous êtes fournissant de l'héritage de soutien ou de quelque chose.
Crowder. Ce n'est pas tout à fait correct. Le VB6 IDE est pas pris en charge mais le VB6 exécution est pris en charge pour le support complet de la durée de vie de Windows 7, qui est environ jusqu'en 2019 msdn.microsoft.com/en-us/vbrun/ms788708.aspx
Très utile de faire la distinction en effet, merci. @L'OP et les autres lecteurs: Si vous n'avez pas lu le lien, juste être clair que quand ils disent de l'IDE, qui comprend le compilateur (par exemple, le compilateur a été non pris en charge pendant plus d'un an et demi); c'est le exécution, qui continueront d'être pris en charge par Windows 7 (mais non, ils disent explicitement dans l'article, au-delà de cela). Acclamations de nouveau, Marque.
Crowder. Encore moi, désolé! L'article dit "il n'y a pas de plans pour inclure VB6 runtime dans les futures versions de Windows au-delà de Windows 7". À mon humble avis cela ne veut pas dire qu'ils ne le supportent pas au-delà de Windows 7. Il dit juste qu'ils n'ont pas fait leurs esprits encore, mais dans un sens, c'est calculée pour essayer de pousser les gens à l'écart à partir de VB6.
C'était la même chose qu'il avait été dit à propos de Vista avant Windows 7. Rien ne peut être conclu à partir de cette "non-état" sur la prise en charge.
Crowder. Ce n'est pas tout à fait correct. Le VB6 IDE est pas pris en charge mais le VB6 exécution est pris en charge pour le support complet de la durée de vie de Windows 7, qui est environ jusqu'en 2019 msdn.microsoft.com/en-us/vbrun/ms788708.aspx
Très utile de faire la distinction en effet, merci. @L'OP et les autres lecteurs: Si vous n'avez pas lu le lien, juste être clair que quand ils disent de l'IDE, qui comprend le compilateur (par exemple, le compilateur a été non pris en charge pendant plus d'un an et demi); c'est le exécution, qui continueront d'être pris en charge par Windows 7 (mais non, ils disent explicitement dans l'article, au-delà de cela). Acclamations de nouveau, Marque.
Crowder. Encore moi, désolé! L'article dit "il n'y a pas de plans pour inclure VB6 runtime dans les futures versions de Windows au-delà de Windows 7". À mon humble avis cela ne veut pas dire qu'ils ne le supportent pas au-delà de Windows 7. Il dit juste qu'ils n'ont pas fait leurs esprits encore, mais dans un sens, c'est calculée pour essayer de pousser les gens à l'écart à partir de VB6.
C'était la même chose qu'il avait été dit à propos de Vista avant Windows 7. Rien ne peut être conclu à partir de cette "non-état" sur la prise en charge.
OriginalL'auteur Royson | 2010-01-19
Vous devez vous connecter pour publier un commentaire.
Vous avez probablement fait quelque chose pour effacer le
Err
objet avant d'écrire dans le fichier journal. C'est très, très facile à faire. Ce que vous voulez faire, c'est dès que vous détectez une erreur s'est produite, saisir le message d'erreur avant de faire rien d'autre. Passer ensuite le message d'erreur quelle que soit la routine de journalisation vous êtes en utilisant. E. g.:Err.Description
peut être vide (essayez avec cetteErr.Raise 1234567
de voir cela se produire),Err.Number
doit toujours avoir une valeur.OriginalL'auteur T.J. Crowder
BTW, merci pour vos mecs les réponses qui m'aident. Je suis à environ une demi-décennie de retard pour le jeu de VB6. Je ne fais pas de windows à moins d'y être forcé. 😉
De toute façon, quand on fait la vérification des erreurs, dire parmi les 3000 de chaque enregistrement de la requête insertions, j'ai appris quelques trucs. Considérer ce bloc de code:
Quand pas de test pour Tre.Nombre, vous aurez un 0: sur chaque commande traitée. (peut-être que vous ne voulez pas que). Le on Error GoTo -1 réinitialise l'erreur afin qu'il fonctionne de nouveau. Apparemment, Err fonctionne uniquement "une fois".
J'ai écrit un script php pour générer le code source VB6 pour exécuter quelques 8000 odbc requêtes... 😛
OriginalL'auteur Chris K
Ne vous avez absolument, positivement ont un
Exit Function
juste au-dessus de laError_Handler:
?Crowder Même donc... Pas de manque de respect destiné à Royson, parce que je sais que j'ai certainement négligé évident trucs avant
Oh, absolument. Vous et moi tous les deux.
Intéressant, ma réponse montre inline utilisation par opposition à l' (éventuellement) l'utilisation en dehors de la fonction.
OriginalL'auteur MarkJ
"Exit Sub" doit être ajouté avant de manipuler le Error_Handler fonction.....
OriginalL'auteur Sandeep Puvvadi