Nessun problema, volevo solo essere sicuro di non perdere qualche funzionalità. Credo che non sia possibile fare quello che chiedevo per evitare i loop all'interno della gestione delle eccezioni (cosa che accadeva col vecchio VB6). Ci sono sempre tanti modi per ottenere un risultato e volevo capire la strada migliore, ho applicato i vostri consigli, cosa preferite tra :
Alternativa 1 (si risolve con il catch):
codice:
Public Function WriteAllFromString(ByVal pNamePathFile As String, ByVal pValue As String) As Boolean
Dim FileWriter As System.IO.StreamWriter
Dim exLoopWriter As Boolean = True
Do
Try
'Istanzio l'oggetto stream per la scrittura del file
'...se il percorso non esiste lo creo nella catch
FileWriter = New System.IO.StreamWriter(pNamePathFile)
FileWriter.Write(pValue)
FileWriter.Close()
exLoopWriter = True
Catch exIO As System.IO.DirectoryNotFoundException
'Se non esiste creo il percorso (dalla variabile elimino il nome file)
System.IO.Directory.CreateDirectory(pNamePathFile.Substring(0, pNamePathFile.LastIndexOf("\")))
exLoopWriter = False
Catch ex As Exception
MsgBox(ex.ToString, MsgBoxStyle.Critical)
Return False
Finally
FileWriter = Nothing
End Try
Loop Until exLoopWriter
Return True
End Function
Alternativa 2 (si risolve con un test esistenza directory):
codice:
Public Function WriteAllFromString(ByVal pNamePathFile As String, ByVal pValue As String) As Boolean
Dim FileWriter As System.IO.StreamWriter
Try
'Controllo l'esistenza del percorso ed eventualmente creo le directory mancanti
Dim PathFile As String = pNamePathFile.Substring(0, pNamePathFile.LastIndexOf("\"))
If System.IO.Directory.Exists(PathFile) Then
System.IO.Directory.CreateDirectory(PathFile)
End If
'Istanzio l'oggetto stream per la scrittura del file
'...se il percorso non esiste lo creo nella catch
FileWriter = New System.IO.StreamWriter(pNamePathFile)
FileWriter.Write(pValue)
FileWriter.Close()
Catch ex As Exception
MsgBox(ex.ToString, MsgBoxStyle.Critical)
Return False
Finally
FileWriter = Nothing
End Try
Return True
End Function
Forse è meglio evitare di passare per il try-catch, come dice la sua funzione, deve gestire le eccezioni (anche se, se vogliamo, la mancanza della cartella nel mio caso lo è). A livello di prestazioni cambierà qualcosa? Bo