Vous êtes sur la page 1sur 4

Le langage VB.NET ` 2eme saison G.

Wisniewski Exceptions Les collections

Au menu aujourdhui...

Le langage VB.NET ` 2eme saison G. Wisniewski Exceptions Les collections

Le langage VB.NET ` 2eme saison


Guillaume Wisniewski corrections TP complements VB.NET exceptions collections mars 2008

guillaume.wisniewski@lip6.fr

Le langage VB.NET ` 2eme saison G. Wisniewski Exceptions Les collections

Ladministratif...

Le langage VB.NET ` 2eme saison G. Wisniewski Exceptions Les collections

Au sujet des TP

corriges :

www-connex.lip6.fr/wisniewski/corrige li276
` pensez a changer lextension des chiers ! ! ! ! ! nom des chiers : lecalvez exo2.txt

Elements de correction
Disclamer
cest du style lisibilite toutes mes remarques sont discutables

Le langage VB.NET ` 2eme saison G. Wisniewski Exceptions Les collections

De linteret des portees limitees

Le langage VB.NET ` 2eme saison G. Wisniewski Exceptions

Console .Write (" Entrez votre nom." + vbNewLine ) Dim name As String Dim temp As String Dim firstchar As Char name = Console . ReadLine () If Char. IsLower (name , 0) Then temp = name. Substring (1) firstchar = name. Substring (0, 1) firstchar = Char. ToUpper ( firstchar ) name = firstchar & temp End If Console . WriteLine (" Bonjour {0}!", name) Console . ReadLine ()

Les collections

Remarque generale
` ` pour acceder au i eme caractere dune chane a.Chars(i)

pour appeler une procedure : maProcedure est possible ; toujours utiliser maProcedure() toujours justier lutilisation de constantes
p.ex. : taille des tableaux

attention aux variables initialisees dans les if

De linteret de labstraction

Le langage VB.NET ` 2eme saison G. Wisniewski Exceptions Les collections

Le langage VB.NET ` 2eme saison G. Wisniewski Exceptions Les collections

Exceptions
cf. Exemple exo 2 du TP1

Les exceptions
Interet/principe
moyen moderne de gerer les erreurs interruption du ow (deroulement) normal du ` programme a cause dune erreur ` remonte la pile dappel jusqua ce que quelquun decide de gerer lerreur

Le langage VB.NET ` 2eme saison G. Wisniewski Exceptions Les collections

Syntaxe

Le langage VB.NET ` 2eme saison G. Wisniewski Exceptions

Try bloque de code qui peut creer une erreur Catch x As Type gestion de l erreur Finally toujours execute End Try

Les collections

en cas derreur le controle est transfere au bloque Catch

Idee fondamentale
distinguer :
celui qui produit lerreur = la personne qui fournit la fonction / la librairie ` celui qui gere lerreur = la personne qui utilise la fonction

Type = type derreur que lon veut gerer propagation des exceptions si elles ne sont pas attrappees le bloque Finally est toujours execute

Exemple

Le langage VB.NET ` 2eme saison G. Wisniewski Exceptions Les collections

Exemple (2)
Imports System

Le langage VB.NET ` 2eme saison G. Wisniewski Exceptions Les collections

Imports System Module Module1 Sub Main () Dim x As Integer = 0 Dim div As Integer = 100 / x Console . WriteLine (div) End Sub End Module

arret du programme avec message derreur

Module Module1 Sub Main () Dim x As Integer = 0 Dim div As Integer = 0 Try div = 100 / x Console . WriteLine ("This line is not executed ") Catch de As DivideByZeroException Console . WriteLine (" Exception occured ") End Try Console . WriteLine (" Result is {0}", div) End Sub End Class

afche un message derreur, mais le programme continue

Structure des exceptions


Principe
les exceptions sont hierarchisees : de la moins ` specique a la plus specique quand on attrape une exception, on attrape toutes les exceptions plus speciques en pratique : Catch e As Exception attrape toutes les exceptions sauf celles qui ont ete attrappees avant.

Le langage VB.NET ` 2eme saison G. Wisniewski Exceptions Les collections

Lancer des exceptions

Le langage VB.NET ` 2eme saison G. Wisniewski Exceptions Les collections

Lancer une nouvelle exception


Throw New Exception (" Votre message ")

Relancer une exception


Try Dim x As Integer = 0 Dim sum As Integer = 100 / x Catch e As DivideByZeroException gerer une partie de l erreur Throw End Try

Exemple
Exception SystemException IOException DirectoryNotFoundException EndOfStreamException
...

Utilisation des exceptions

Le langage VB.NET ` 2eme saison G. Wisniewski Exceptions

Le langage VB.NET ` 2eme saison G. Wisniewski Exceptions Les collections

Principe
Its better to ask for forgiveness than to ask for permission ` tres utilise dans les langages modernes

Les collections

Exemple
on veut lire un chier
est-ce quil existe ? est-ce bien un chier regulier ? ` as-t-on les droits dacces ? ...

Les collections

plus simple dessayer de lire... ... et de gerer les erreurs qui surviennent.

Presentations
Denition
groupe delements dynamique : on peut ajouter et enlever des elements ` sans probleme repere par leur indice ou une cle

Le langage VB.NET ` 2eme saison G. Wisniewski Exceptions Les collections

Les ArrayList

Le langage VB.NET ` 2eme saison G. Wisniewski Exceptions

Principe
` collection dobjets heterogenes ` ` on accede aux objets grace a un index (comme dans un tableau) necessite un Imports System.Collections

Les collections

Les differentes collections


les listes : ArrayList, List les dictionnaires : HashTable, Dictionnary les listes dictionnaires SortedList, DictionnaryList les Queue, les Stack, les HashSet

Attention ! !
heterogeneite cest au programmeur de gerer les types ` obliger de caster quand on recupere un objet : res = CInt(L(0))

Exemple
creation Dim L As NewArrayList = ArrayList . Repeat ("A", 5) ajoute un element (a la fin) L.Add(" Bonjour ") supprime le 1er element L. RemoveAt (0) nombre d element L. Count trie la liste L.Sort () reinitialise une liste L. Clear () teste la presence L. Contains ("A") Rechercher un element L. IndexOf ("A") si L est triee L. BinarySearch ("A")

Le langage VB.NET ` 2eme saison G. Wisniewski Exceptions Les collections

` Les listes homogenes


un seul type de donnee dans la liste

Le langage VB.NET ` 2eme saison G. Wisniewski Exceptions Les collections

Utilisation
necessite Imports System.Collections.Generic declaration : Dim lst As New List (Of Decimal) ` acces : Dim a As Decimal = lst(3)

Methode specique : FindAll


Function Test(s As String ) As Boolean Return s. StartsWith ("A") End Function Dim lst As List (Of String ) ... Dim res As List (Of String ) = lst. FindAll (Test)

Les HashTable
Principe
table de hachage, dictionnaire, ... les cles sont toujours uniques 1 2 3 Premier Deuxieme Troisieme

Le langage VB.NET ` 2eme saison G. Wisniewski Exceptions Les collections

Dictionnaire : autres methodes

Le langage VB.NET ` 2eme saison G. Wisniewski Exceptions Les collections

` Acces aux elements


` on a vu lacces direct ` ` acces a lensemble des valeurs ht.Values cest une liste ` ` acces a lensemble des cles ht.Keys

Utilisation
Dim ht As HashTable ht.Add (1, " premier ") ht.Add (2, " deuxieme ") Console . WriteLn (ht (3)) ht. ContainsKey (1) ht. ContainsValue (" quatrieme ")

Dictionnaires types

Le langage VB.NET ` 2eme saison G. Wisniewski Exceptions Les collections

Autres types/collections

Le langage VB.NET ` 2eme saison G. Wisniewski Exceptions Les collections

les queues (Queue)

Utilisation
Dim dict as New Dictionnary(Of String, String)

les piles (Stack) les listes chanees (LinkedList) les ensembles (HashSet)

Vous aimerez peut-être aussi