Page d'Accueil

Gestion d'erreur

 

Introduction aux erreurs

 

Vue d'ensemble

N'importe comment probablement soigneux et méticuleux vous êtes, un certain temps pour temps, là sera des problèmes avec votre code ou votre application. Quelques problèmes viendront de toi. Quelques problèmes seront provoqués par des utilisateurs. Et quelques problèmes ne seront provoqués par ni toi ni vos utilisateurs. Ceci signifie qu'il y a des choses que vous pouvez fixer. Ceux que vous pouvez éviter autant que possible. Et il y a des situations indépendantes de votre volonté. Toujours, autant que vous pouvez, essai prévoyant n'importe quel type de problème que vous imaginez peut se produire quand un utilisateur emploie votre application, et agir autant que possible pour éviter de mauvaises situations.

 

Catégories d'erreur

Comme mentionné ci-dessus, il y a trois types principaux de problèmes lesquels vous traiterez, directement ou indirectement:

  1. Syntaxe : Une erreur de syntaxe vient de votre mistyping un mot ou de former une mauvaise expression en votre code. Il pourrait être que vous avez mal épelé un mot-clé tel que ByVel au lieu de ByVal. C'a pu également être une mauvaise expression comme 524+ + 62.55. Ce pourrait être une erreur de « grammaire » telle que fournir le nom d'une variable avant son type de données en déclarant une variable (tout à fait terrain communal pour ceux qui régulièrement transition de différentes langues (C/C++, Pascal, C#, Java))

    Quand vous employez de base visuel de Microsoft pour écrire votre code, il signalerait les erreurs tandis que vous écrivez votre code, abandonnant l'heure de les fixer. Quand votre base de données fonctionne, elle peut vous faire savoir d'autres erreurs de syntaxe. Pour cette raison, il est presque la plus facile fixer des erreurs de syntaxe parce que, la majeure partie du temps, le problème serait précisée et vous pouvez le fixer. 
  2. Temps d'exécution : Après que toutes les erreurs de syntaxe aient été fixées, le programme peut être prêt pour l'utilisateur. Il y a différents types de problèmes aux lesquels un utilisateur peut faire face en agissant l'un sur l'autre avec votre programme. Par exemple, imaginer que, en votre code, vous indiquez qu'une image serait chargée et montrée à l'utilisateur mais vous oubliez d'embarquer l'image ou l'annuaire de l'image indiquée en votre code devient différent quand un utilisateur ouvre votre application. Dans ce cas-ci, quand vous avez examiné votre base de données dans votre machine, tout était très bien. C'est un type d'erreur d'exécution.
    Il est la plupart du temps facile fixer des erreurs d'exécution parce que vous saurez quel problème se produit et pourquoi.
  3. Logique : Ce sont des erreurs qui ne s'adaptent pas dans l'un des au-dessus des catégories. Elles pourraient être provoquées par l'utilisateur abusant de votre application, un problème avec l'ordinateur sur lequel l'application fonctionne tandis que la même application fonctionne très bien dans un autre ordinateur. Puisque les erreurs de logique peuvent être vagues, il peut également être difficiles les fixer.

Une des meilleures qualités d'un programmeur efficace est de prévoir autant de problèmes comme possible et de traiter eux aux parties. Il peut être faciles fixer quelques problèmes. Avec quelques autres, vous devrez simplement établir plus d'expérience pour savoir les fixer. Malheureusement, il ne sera pas peu commun d'avoir des utilisateurs te demander de fixer votre application quand un problème peut ne pas venir de lui.

 

Manipulation des erreurs

 

Introduction

De ses parties, de base visuel de Microsoft lui a toujours fait une priorité pour traiter des erreurs. Les la plupart ou les premières erreurs se produisent en votre code. Le rédacteur visuel de code de base de Microsoft peut vous aider à détecter des erreurs de syntaxe et à les fixer. Par exemple, quand une certaine erreur se produit tandis que vous écrivez votre code, une boîte de message montrerait, vous incitant à fixer le problème. S'il y a une erreur de syntaxe que cela l'ide n'a pas signalée ou que vous avez ignoré quand écrivant votre code, vous le découvririez quand la forme ou le rapport est visionnée préalablement.

Une erreur d'exécution est une qui se produit en utilisant votre application. Considérer la forme suivante :

Private Sub cmdCalculate_Click()
    Dim Number#
    Dim Twice#
    
    Number = [txtNumber]
    Twice = Number * 2
    [txtResult] = Twice
End Sub

Voici un exemple de l'exécuter :

Le premier aspect votre devrait prendre dans considèrent est d'imaginer ce qui pourrait poser un problème. Si vous pensez il y a une telle possibilité, vous peut créer une étiquette qui pourrait être employée pour transférer le code si un problème se produit. Voici un exemple :

Private Sub cmdCalculate_Click()
    Dim Number#
    Dim Twice#
    
    Number = [txtNumber]
    Twice = Number * 2
    [txtResult] = Twice
    
ThereWasAProblem:
        MsgBox ("There was a problem when executing your instructions")
End Sub

Si vous créez une telle étiquette, vous devriez indiquer quand sauter à cette étiquette. Autrement, en tant que dans ce cas-ci, la section d'étiquette s'exécuterait toujours. Voici un exemple de courir la version ci-dessus :

Dans ce cas-ci, nous voulons que la section d'étiquette s'exécute seulement à le moment où nous la voulons. Pour empêcher l'exécution d'atteindre cette section sinon dirigée ainsi, vous pouvez ajouter une ligne de sous-marin de sortie au-dessus de la section d'étiquette :

Private Sub cmdCalculate_Click()
    Dim Number#
    Dim Twice#
    
    Number = [txtNumber]
    Twice = Number * 2
    [txtResult] = Twice
    
    Exit Sub
    
ThereWasAProblem:
        MsgBox ("There was a problem when executing your instructions")
End Sub

Cette fois si vous exécutez le programme avec une valeur appropriée, la section d'étiquette ne serait pas atteinte.

En cas d'erreur, sauter à l'étiquette

Le code ci-dessus fonctionnera très bien. Quand vous visionnez la forme, imaginer que l'utilisateur dactylographie une valeur inadéquate telle que 24$.58 au lieu de 244.58. Dans ce cas-ci, la valeur n'est pas un nombre, le programme « se briserait » et vous a fait savoir qu'il y avait un problème :

 

Avec une certaine expérience, vous sauriez ce qu'était le problème, autrement, vous feriez face à une explication vague. Si un problème se produit quand une personne emploie votre base de données, l'ordinateur peut montrer un message insignifiant à l'utilisateur qui ne saurait pas quoi faire avec lui. Par conséquent, vous pouvez commencer par créer une étiquette appropriée comme présenté ci-dessus. Une erreur se produit normalement d'un procédé. Par conséquent, pour faciliter votre code pour lire, vous devriez créer une étiquette qui prouve qu'elle est faite pour une erreur au lieu d'être une étiquette régulière. L'étiquette devrait également refléter le nom du procédé. Voici un exemple :

 
Private Sub cmdCalculate_Click()
    Dim Number#
    Dim Twice#
    
    Number = [txtNumber]
    Twice = Number * 2
    [txtResult] = Twice
    
    Exit Sub
    
cmdCalculate_Click_Error:
        MsgBox ("There was a problem when executing your instructions")
End Sub

Quand vous pensez il y aura un problème en votre code, quelque part dans les lignes sous le nom du procédé mais avant que la ligne qui pourrait poser le problème, dactylographient sur GoTo d'erreur suivi du nom de l'étiquette qui traiterait l'erreur. Voici un exemple :

Private Sub cmdCalculate_Click()
    On Error GoTo cmdCalculate_Click_Error
    Dim Number#
    Dim Twice#
    
    Number = [txtNumber]
    Twice = Number * 2
    [txtResult] = Twice
    
    Exit Sub
    
cmdCalculate_Click_Error:
        MsgBox ("There was a problem when executing your instructions")
End Sub

Ceci informe le compilateur qui, s'il y a un problème quand ce code s'exécute, saut à l'étiquette indiquée. Quand dessus le rapport GoTo d'erreur est employé, ceci indique que si n'importe quel type d'erreur se produit tandis que le code de ce procédé est exécuté, transférer la compilation à l'étiquette. Dans ce cas-ci, dès que quelque chose de mauvais se produira, les marques de compilateur le secteur où le problème s'est produit, saute le code normal et saute à l'étiquette indiquée par dessus la ligne GoTo d'erreur. Après que la section de cette étiquette soit exécutée, le compilateur renvoie où l'erreur s'est produite. S'il n'y a rien à résoudre le problème, le compilateur continue en bas mais sans d'exécuter les lignes du code impliquées. Dans ce cas-ci, il rencontrerait la ligne de sous-marin de sortie et sortirait du procédé.

 

En cas d'erreur, sauter à la ligne #

Bien que l'étiquette soit plus explicite, elle indique seulement au compilateur quelle ligne à sauter à en cas d'un problème. L'alternative est d'indiquer une ligne nombre au lieu d'une étiquette.

Résumé

Si un problème se produit en votre code et vous fournissez une étiquette pour montrer un message amical comme fait ci-dessus, le compilateur montrerait le message et sortirait du procédé. Si ceci se produit, comme mentionné ci-dessus, quand le compilateur renvoie où le problème s'est produit, vous pouvez fournir une alternative. Par exemple, dans notre programme, si l'utilisateur fournit une valeur inadéquate qui cause l'erreur, vous pouvez fournir une valeur alternative et demander le compilateur de continuer comme si rien ne s'est produit. Dans ce cas-ci, vous voulez au compilateur « reprendre » son activité.

Pour indiquer que le programme devrait continuer, vous pouvez employer le mot-clé de résumé. Voici un exemple :

Private Sub cmdCalculate_Click()
    On Error GoTo cmdCalculate_Click_Error
    Dim Number#
    Dim Twice#
    
    Number = [txtNumber]
    
    Resume
    
    Twice = Number * 2
    [txtResult] = Twice
    
    Exit Sub
    
cmdCalculate_Click_Error:
        MsgBox ("There was a problem when executing your instructions")
End Sub

Quand une erreur se produit, si vous voulez que le programme continue avec une valeur alternative que celle qui a posé le problème, dans la section d'étiquette, type résumé après. Voici un exemple :

Private Sub cmdCalculate_Click()
    On Error GoTo cmdCalculate_Click_Error
    Dim Number#
    Dim Twice#
    
    Number = [txtNumber]
    Twice = Number * 2
    [txtResult] = Twice
    
    Exit Sub
    
cmdCalculate_Click_Error:
        MsgBox ("There was a problem when executing your instructions")
        Resume Next
End Sub

Dans ce cas-ci, puisque n'importe quelle variable numérique est initialisée avec 0, quand le compilateur revient à la ligne du code qui a posé le problème, il emploierait 0 comme produit de remplacement à la valeur inadéquate. Basé sur ceci, vous pouvez fournir une nouvelle valeur à l'utilisation en cas d'erreur. Voici un exemple :

Private Sub cmdCalculate_Click()
    On Error GoTo cmdCalculate_Click_Error
    Dim Number#
    Dim Twice#
    
    Number = [txtNumber]
    Twice = Number * 2
    [txtResult] = Twice
    
    Exit Sub
    
cmdCalculate_Click_Error:
        MsgBox ("There was a problem when executing your instructions")
        Number = 16
        Resume Next
End Sub

Voici un exemple d'exécuter le programme :

 

L'objet d'errement

 

Introduction

Pour soutenir la gestion d'erreur, de base visuel fournit une variable globale appelée erre. Ceci te permet d'identifier l'erreur et sa description. Puisqu'une erreur dépend de ce qui l'a causée et de pourquoi, les valeurs de la variable d'errement également dépendent et ne sont pas toujours identiques.

Le nombre d'erreur

En développant de base visuel pour les applications (VBA), ceux qui ont travaillé sur le projet également ont essayé de prévoir autant de problèmes comme possibles. Ceci leur a permis de vous aider avec les types d'erreurs que votre code ou vos applications peut rencontrer. Pour le faciliter, ils ont assigné un nombre spécifique à chaque type d'erreur. En conséquence, quand une erreur d'exécution se produit dans votre base de données, une zone de dialogue serait soulevée et montrerait un nombre qui correspond à l'erreur. Vous avez pu avoir vu ces types de nombres dans des leçons ou des exercices précédents. Voici un exemple d'une erreur d'exécution le numéro 2489 :

Error

L'objet d'errement est équipé d'une propriété de nombre qui te permet d'identifier une erreur par son nombre. La propriété de nombre est un nombre entier constant. La plupart des temps, quand une erreur d'exécution se produit, la zone de dialogue ci-dessus te montreraient le nombre d'erreur qui s'est produit. Considérer l'exemple suivant :

Exception Handling

Private Sub cmdCalculate_Click()
    Dim Number#
    Dim Twice#
    
    Number = [txtNumber]
    Twice = Number * 2
    [txtResult] = Twice
End Sub

Imaginer que l'utilisateur écrit une valeur inadéquate dans la boîte de demande des textes :

Après avoir cliqué le bouton, une erreur serait produite comme suit :

Si les clics d'utilisateur corrigent, la ligne qui a causé l'erreur serait accentuée :

Noter que, dans le screenshot précédent, nous obtenons le nombre d'erreur. 

Le message d'erreur

Évidemment un nombre d'erreur ne signifie pas beaucoup. Pour indiquer ce que chaque nombre d'erreur se rapporte, l'objet d'errement est équipé d'une propriété de description, qui est une corde. Pour montrer ce message, vous pouvez créer dessus une expression GoTo d'erreur et indiquer où sauter si une erreur se produit. Voici un exemple :

Private Sub cmdCalculate_Click()
    On Error GoTo cmbCalculate_Error
    Dim Number#
    Dim Twice#
    
    Number = [txtNumber]
    Twice = Number * 2
    [txtResult] = Twice
    
    Exit Sub
cmbCalculate_Error:
    If Err.Number = 13 Then
        MsgBox Err.Description
    End If
End Sub

Cette fois, si le type d'erreur que vous prévoyez se produit, vous peut légitime montrer la description ;

De nouveau, noter que le type de message de la corde d'Err.Description peut ne pas signifier beaucoup à un utilisateur régulier. Pour cette raison, vous devriez lui faire une habitude pour prévoir autant de types d'erreurs qui peuvent se produire dans votre application et montrer des messages plus signicatifs. Vous pouvez faire ceci dans la section où le code sauterait quand une erreur se produit.

La source d'erreur 

On le suppose qu'une erreur serait causée en utilisant votre application. En fait, la base de données sur laquelle l'utilisateur fonctionne quand l'erreur s'est produite est considéré comme source d'erreur. Cette information peut être valeur parfois. L'application qui a causé une erreur est identifiée comme la propriété de source de l'objet d'errement. La majeure partie du temps, vous saurez ceci. Toujours, si vous voulez obtenir cette information, vous pouvez accéder à la propriété de source de l'objet d'errement et obtenir ceci comme corde.

Correction et la fenêtre immédiate

 

La fenêtre immédiate

La correction se compose examiner et prises d'essai de votre code ou parties de votre application pour identifier les problèmes qui peuvent se produire quand quelqu'un emploie votre base de données. De base visuel de Microsoft fournit autant d'outils comme possible de vous aider avec ceci charger.

La fenêtre immédiate est un objet que vous pouvez employer pour examiner des fonctions et des expressions. Elle est disponible seulement en de base visuel (et pas dans le côté de Microsoft Access). (« Physiquement ») employer la fenêtre immédiate, sur le menu principal de de base visuel de Microsoft, vous pouvez cliquer la vue - > fenêtre immédiate. C'est une habitude pour maintenir la fenêtre immédiate dans la section inférieure du rédacteur de code mais vous pouvez le déplacer là de traîner près sa barre de titre :

Probablement l'action la plus simple que vous pouvez effectuer dans la fenêtre immédiate se compose examiner une expression. Par exemple, vous pouvez écrire une opération arithmétique et examiner son résultat. Pour faire ceci, dans la fenêtre immédiate, dactylographier le point d'interrogation « ? » suivi de l'expression et de la pression entrer. Voici un exemple qui examine le résultat de 275.85 + de 88.26 :

Une des actions les plus fondamentales que vous pouvez effectuer dans la fenêtre immédiate se compose examiner une fonction intégrée. ceci, type ? suivi du nom de la fonction et de ses arguments éventuels. Par exemple, pour examiner la fonction d'UCase$ nous avons passé en revue dans la leçon 5, dans la fenêtre immédiate, toi pourrions dactylographier :

? UCase("République d'Afrique du Sud")

Après la dactylographie de la fonction et la pression entrer, le résultat montrerait dans la prochaine ligne :

 

L'objet de correction

La fenêtre immédiate est identifiée en code comme l'objet de correction. Programmatically à quelque chose, telle qu'une corde, dans la fenêtre immédiate, l'objet de correction fournit la méthode d'impression. La manière la plus simple de l'employer se composent lui passer une corde. Par exemple, vous imaginer pour créer un bouton sur une forme, vous l'appellent cmdTestFullName et l'initialisent avec de la corde. Voici un exemple de la façon dont vous pouvez montrer cette corde dans la fenêtre immédiate :

Private Sub cmdTestFullName_Click()
    Dim strFullName$
    
    strFullName$ = "Daniel Ambassa"
    Debug.Print strFullName$
End Sub

Quand vous cliquez le bouton, la fenêtre immédiate montrerait la corde passée :

De la même manière, vous pouvez créer une expression plus raffinée et examiner sa valeur dans la fenêtre immédiate :

Vous pouvez également passer une valeur, telle qu'une date, qui peut facilement être convertie en corde.

 


Précédent Copyright © Yevol, 2007 Suivant