Gestion de plusieurs exceptions dans une sub
Bonjour,
J'ai la sub suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| Private Sub download()
Dim user As String = "monlogin"
Dim password As String = "monpassword"
Dim wc As New WebClient()
wc.Credentials = New NetworkCredential(user, password)
Dim baseUri = "ftp://ftp.cluster006.ovh.net/www/jdownloads/Patient/new_treatment/" 'URI et chemin ou je veux aller dans le ftp
Dim newDirectory As String = "../done_treatment/"
Dim fileNames = GetDirectoryListing(baseUri, wc.Credentials)
Dim localpath As String = "\\nas\Calculateur\DATA\encours\" 'chemin ou je veux dl les fichiers
For Each filename In fileNames
Dim newPath As String = newDirectory + "/" + filename
If Not filename.EndsWith(".xls", StringComparison.CurrentCultureIgnoreCase) Then 'ne tient pas compte de la casse
Continue For
End If
Dim localFileName = System.IO.Path.Combine(localpath, filename)
Dim uri = baseUri + "/" + filename
wc.DownloadFile(uri, localFileName)
MoveFile(uri, newPath, wc.Credentials) ' transfere le fichier dans done_treatment apres avoir downloade
Next
System.Threading.Thread.Sleep(1000)
Labelprogress.Visible = False
OvalShapeencours.Visible = False
Labeldone.Visible = True
OvalShapedone.Visible = True
Me.Enabled = True
End Sub |
Comme je reprends un peu la prog de ce soft, je teste un peu les sub et celle la ne me plait pas car :
- Si pour une raison ou une autre, le ftp ou le localpath ou le newdirectory sont morts, l'appli plantera faute de gestion d'exceptions.
J'ai pensé a des try/catch comme cela :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| For Each filename In fileNames
Try
Dim newPath As String = newDirectory + "/" + filename
If Not filename.EndsWith(".xls", StringComparison.CurrentCultureIgnoreCase) Then 'ne tient pas compte de la casse
Continue For
End If
Dim localFileName = System.IO.Path.Combine(localpath, filename)
Dim uri = baseUri + "/" + filename
wc.DownloadFile(uri, localFileName)
MoveFile(uri, newPath, wc.Credentials) ' transfere le fichier dans done_treatment apres avoir downloade
Catch ex as ......... (gestion de l exception si timeout du ftp)
Catch ex as ......... (gestion de l exception si le localpath plante)
Catch ex as ......... (gestion de l exception si le newdirectory plante)
End try
Next
System.Threading.Thread.Sleep(1000)
Labelprogress.Visible = False
OvalShapeencours.Visible = False
Labeldone.Visible = True
OvalShapedone.Visible = True
Me.Enabled = True
End Sub |
[/CODE]
Je ne parviens toutefois pas a trouver comment syntaxer les catch (notament pour le ftpwebresponse) bien qu'ayant cherche sur msdn, google et pas mal d'autres sources.
Pourrais je savoir :
si ma structure est correcte et éventuellement avoir une petite aide pour mon catch ftpwebresponse ?
merci bien :lol: