الملتقى الجزائري
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

Le gestionnaire d'erreurs

2 مشترك

اذهب الى الأسفل

Le gestionnaire d'erreurs Empty Le gestionnaire d'erreurs

مُساهمة من طرف MeMo السبت 7 يونيو 2008 - 15:42

I. Ecrire un gestionnaire d'erreurs




I-1. Principe général




Erreur d'exécution

Erreur survenant lors de l'exécution du code. Une erreur d'exécution se produit lorsqu'une
instruction tente d'accomplir une opération non valide.



Nous avons tous utilisé dans notre activité de développement l'instruction :

On Error Resume Next

C'est en effet une instruction intéressante car si une erreur se produit, le programme ignore l'erreur
et passe à la ligne suivante.

Mais, à mon avis c 'est une instruction que l'on doit insérer dans son programmes que lorsque l'on a
débugué son application et pour prévenir l'erreur imparable que l'on n'avait pas prévue lors des
divers contrôles des lignes de code.


Le gestionnaire d'erreurs Kitidea Le gestionnaire d'erreurs sert à fournir à l'utilisateur les possibilités de récupérer
proprement les erreurs d'exécution du programme.



Vous utilisez généralement l'instruction Resume lorsque le gestionnaire d'erreurs peut corriger
une erreur et l'instruction Resume Next dans le cas contraire.

Vous pouvez cependant écrire un gestionnaire d'erreurs qui ne révèle pas à l'utilisateur
l'existence d'une erreur d'exécution ou qui affiche des messages d'erreur tout en permettant
à l'utilisateur de saisir des corrections.




I-2. Exemple pratique




La base de votre gestionnaire d'erreurs est l'instruction On Error :




  • On Error GoTo SortieDiscrete (L'étiquette qui suit le mot clé On Error GoTo est laissée libre à votre discrétion)
  • On Error Resume Next
  • On Error GoTo 0


Quand Visual Basic traite l'instruction On Error, il initialise un traitement d'événements qui vérifie
continuellement les conditions d'erreurs pendant que le code s'exécute.



Quand une erreur se produit, le chemin précis du déroulement du programme dépend de l'utilisation de l'
instruction On Error.

La liste suivante montre les différentes expressions de cette instruction :



On Error GoTo suivi de l'étiquette que vous avez déclarée, en l'occurence dans cet exemple, nous emploierons :

On Error GoTo SortieDiscrete : le contrôle passe
à la première ligne exécutable du code qui suit l'étiquette indiquée par SortieDiscrete.


Exemple :

Private Sub Form_Load()
On Error GoTo Sortiediscrete
'lignes de code du programme
'
'
'Tout s' est bien passé, nous sortons de la procédure
Exit Sub

'Voici l' étiquette du gestionnaire d' erreurs
SortieDiscrete:
'On peut mettre un message du genre(Voir en fonction de l' erreur détectée)
msg = "Une erreur involontaire s' est produite"
msg + msg = " veuillez relancer le programme!"
MsgBox msg

End Sub




Explications :

Vous avez indiqué au programme que, s'il rencontre une erreur,
qu'il veuille bien se diriger vers l'étiquette réservée à cet effet.



1er cas :

Il y a effectivement dans le listing du code une erreur inconnue provoquée par le programme
ou par le système.

Dés que l'erreur est détectée, le contrôle est dirigé automatiquement vers l'étiquette Label,
- dans notre cas, c'est l'étiquette "Sortie discrète" -
Il l'ignore mais lit les lignes de codes qui suivent immédiatement celle-ci.

Si vous n'avez pas de message, le programme suit son cours, si vous avez un message, il le lit, ferme la
page en cours, termine son cycle et attend les instructions suivantes.



2e cas :
Il n'y a pas d'erreurs, le contrôle lit les lignes de code, arrive à l'instruction Exit Sub,
ferme normalement la page en cours, sort de la procédure et attend de nouvelles instructions.

Si nous n'avions pas mis l'instruction Exit Sub,
le contrôle aurait continué à lire les instructions suivantes et aurait affiché les les lignes de code
qui se trouvent après l'étiquette Label, ce qui vous aurait induit en erreur.


Le gestionnaire d'erreurs Kitinfo Vous avez constaté que j'ai mis juste après l'étiquette le double point ":", c'est tout simplement
la caractère qui indique à VB que j'ai utilisé une étiquette de renvoi.


On Error Resume Next :

Le contrôle passe à la ligne qui suit celle qui a provoquée l'erreur



On Errot GoTo 0 :

L'erreur est neutralisée et le gestionnaire d'erreurs est contourné dans la procédure.



Le code suivant montre l'utilisation d'un gestionnaire simple pour contrôler la suppression d'
un fichier LANGLADE.TXT sur le lecteur de disquette.



Sub Main( )
On Error GoTo InformeMoi
Kill "A:\LANGLADE.TXT"
'Si tout s'est passé normalement nous sortons de la procédure
Exit Sub
InformeMoi:
MsgBox "Erreur de lecture de disquette"
End sub




Faites l'essai la première fois sans disquette et la deuxième fois avec
une disquette dans laquelle vous aurez renommé un fichier existant en
"Langlade.txt"
Vérifiez les attributs du fichier de façon qu'il puisse être effaçable.


Le gestionnaire d'erreurs Kitwarning Attention, ce fichier va être effacé par votre réalisation




II. Les propriétés de l'objet ERR




Une fois que l'exécution du programme a été transmise à votre routine de gestion d'erreurs,
votre code peut déterminer l'erreur qui s'est produite en affichant son numéro et sa description.



Quand une erreur se produit, les informations la concernant sont stockées dans l'objet ERR.

Vous pouvez utiliser deux propriétés de cet objet, la propriété Number et la propriété Description.

Dans les vieilles versions du Basic, les instructions Error et Error() étaient utilisées.




  • Err.Number : indique le numéro de l'erreur
  • Err.DEscription : indique la description de l'erreur


Le code qui suit montre un exemple de code qui vérifie l'existance d'un fichier dans un répertoire particulier.

En cas d'erreur, le programme affiche le numéro de l'erreur ainsi que sa description.



Sub Main ( )
On Error GoTo ErreurFatale
If Dir ("C:\Gilou\Langlade.txt") = False Then
MsgBox "Ce fichier n' existe pas"
End If
Exit Sub
ErreurFatale:
MsgBox "N° erreur:"&Err.Number & vbLf & Err.DEscription
End Sub




La figure qui suit montre le résultat obtenu issu de la capture de l'erreur par le gestionnaire.


Le gestionnaire d'erreurs Erreur Le gestionnaire d'erreur permet d'afficher le numéro de l'erreur et sa description.

Vous pouvez utiliser toutes les valeurs disponibles en consultant
l'aide en ligne de visual Basic en appuyant sur la touche F1 de votre
clavier.
MeMo
MeMo
الزعيم
الزعيم

ذكر
عدد الرسائل : 4524
العمر : 32
العمل/الترفيه : tous
المزاج : Dur
نقاط التميز : admin
الأوسمة : Le gestionnaire d'erreurs 1_1193940536
البلاد : Le gestionnaire d'erreurs Algeri10
تاريخ التسجيل : 24/03/2008

الرجوع الى أعلى الصفحة اذهب الى الأسفل

Le gestionnaire d'erreurs Empty رد: Le gestionnaire d'erreurs

مُساهمة من طرف Alex السبت 21 يونيو 2008 - 11:25

thank you
Alex
Alex
عضو نشيط (مشرف)
عضو نشيط (مشرف)

ذكر
عدد الرسائل : 1192
العمر : 29
نقاط التميز : 120
تاريخ التسجيل : 23/05/2008

الرجوع الى أعلى الصفحة اذهب الى الأسفل

Le gestionnaire d'erreurs Empty رد: Le gestionnaire d'erreurs

مُساهمة من طرف MeMo السبت 21 يونيو 2008 - 22:36

not at all
MeMo
MeMo
الزعيم
الزعيم

ذكر
عدد الرسائل : 4524
العمر : 32
العمل/الترفيه : tous
المزاج : Dur
نقاط التميز : admin
الأوسمة : Le gestionnaire d'erreurs 1_1193940536
البلاد : Le gestionnaire d'erreurs Algeri10
تاريخ التسجيل : 24/03/2008

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى