Anda di halaman 1dari 7

ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail

Gestion des erreursGestion des erreurs

DIRECTION RECHERCHE ET INGENIERIE DE FORMATION


SECTEUR NTIC
ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail

DIRECTION RECHERCHE ET INGENIERIE DE FORMATION


SECTEUR NTIC
Gestion des erreurs

Sommaire

1. Introduction.....................................................................................2
2. Structure de base.............................................................................2
3. Gnrer une exception.......................................................................3
4. Mise en uvre..................................................................................4
4.1. Le code de la procdure o survient lerreur......................................4
4.2. Le code du module de traitement Erreurs :........................................5
4.3. Le rsultat:...................................................................................5

Document Millsime Page


OFPPT @ 371533158.doc janvier 09 1-7
Les fichiers

1.Introduction
Il est important de dcider de standards de gestion derreurs dans
les applications.
Cette approche standardise aura pour but dviter les arrts
brutaux de vos applications lis des dficiences de prises en
compte des erreurs et les pertes de donnes qui sen suivraient.
Une bonne gestion des erreurs permet aussi damliorer la
productivit des dveloppeurs et de faciliter la maintenance des
applications.

Quelques exemples pour illustrer le fonctionnement du gestionnaire


derreurs dans Vb.Net.

2.Structure de base
Le modle retenu est celui qui existait pralablement en C++.
Le gestionnaire derreurs utilise des blocs TryCatchFinally.
Cette approche est aujourdhui celle retenue aussi au niveau des
SGBDR comme vous pourrez le constater par la suite de vos
apprentissages.

Les classes relatives la gestion des exceptions se situent dans


lespace de nom system.exception.

La structure de base est de type :

Try : Dbut de la prise en compte des erreurs


Catch : Interception des erreurs survenues entre Try et Catch
Finally : bloc dintructions facultatif.

Ce dernier est systmatiquement parcouru, quune exception ait eu


lieu ou non.

Il est possible de dfinir plusieurs blocs catch pour un seul Try afin
de filtrer les erreurs par nature. Les blocs Catch fonctionnent la
manire des groupes case.

Il est possible dimbriquer les structures Try.

Document Millsime Page


OFPPT @ 371533158.doc janvier 09 2-7
Les fichiers

3.Gnrer une exception


Linstruction Throw permet de gnrer une exception nouvelle.
Attention son utilisation toutefois car elle demande pas mal de
ressources au systme. Vous avez dailleurs certainement pu le
constater lors des plantages de vos programmes

La classe exception comporte de nombreuses proprits et


mthodes dont quelques unes vous sont prsentes dans les deux
exemples suivants.

Un des principaux intrts de cette approche rside dans la


centralisation possible des procdures prenant en charge la gestion
des exceptions.

Il est ainsi possible de les isoler dans un module ou une classe


particulire et de rendre ces procdures accessibles depuis tout
point de votre application.

Document Millsime Page


OFPPT @ 371533158.doc janvier 09 3-7
Les fichiers

4.Mise en uvre
Soit lexemple dune opration de division.
Le programmeur a prvu deux exceptions prcisment spcifies :
La division par 0
La division dune valeur non numrique
Et a dcid dintercepter toutes les erreurs dans un autre bloc.

4.1. Le code de la procdure o survient lerreur

Private Sub diviser()


Dim nombre1, nombre2, resultat As Int16
Dim bErreur As Boolean
' Dbut du bloc de gestion des erreurs
Try
nombre1 = Integer.Parse(txtNombre1.Text)
nombre2 = Integer.Parse(txtNombre2.Text)
resultat = nombre1 \ nombre2
' Erreur Arithmtique div par 0
Catch Exe As System.ArithmeticException
gererErrA(Exe)
bErreur = True
' Erreur de conversion de type : une oprande non numrique
Catch Exe As System.InvalidCastException
gererErrB(Exe)
bErreur = True
' Erreur d'un autre type
Catch Exn As System.Exception
gererErrC(Exn)
bErreur = True
Finally
If bErreur Then
MessageBox.Show("Echec")

Else
MessageBox.Show("Opration russie")
End If
End Try
End SubPrivate

Document Millsime Page


OFPPT @ 371533158.doc janvier 09 4-7
Les fichiers

4.2. Le code du module de traitement Erreurs :


Public Sub gererErrA(ByVal Erreur As Exception)
Dim SMessage As String
SMessage = "Emplacement Erreur StackTrace : " &
Erreur.StackTrace & vbCr
SMessage += "Type erreur GetType : " &
Erreur.GetType.ToString() & vbCr
SMessage += "Emplacement Interception TargetSite.Name " &
Erreur.TargetSite.Name & vbCr
SMessage += "Le tout en vrac : " & Erreur.ToString
MessageBox.Show(SMessage, _
"Une erreur est survenue...", MessageBoxButtons.OK, _
MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, _
MessageBoxOptions.DefaultDesktopOnly)
End Sub

Public Sub gererErrB(ByVal Erreur As Exception)


MessageBox.Show("Intercepter pour Erreur de Conversion de
type")
End Sub
Public Sub gererErrC(ByVal Erreur As Exception)
MessageBox.Show("Intercepter pour Erreur de type non prvu")
End Sub

4.3. Le rsultat:

Nombre Nombre Rsultat obtenu


1 2
3 0

3 A

3 2

Conscutif une opration file.open

Document Millsime Page


OFPPT @ 371533158.doc janvier 09 5-7

Anda mungkin juga menyukai