Ciao Oregon,
Grazie per la risposta. Hai ragione in una normale applicazione Windows Form il debug puo` essere impostato per arrestarsi dove avviene l'errore ma in questo caso ho elaborato un codice assemblato dll che sto testando da un Form tabella con bottoni dal quale lancio le varie funzioni contenute nell'assemblato.
Ho creato una funzione per la gestione degli errori:
Public Sub GestioneErrori(ByVal messErr As String, ByVal ErrNr As Integer)
MessageBox.Show(messErr, "Errore nr.:" & ErrNr)
End Sub
e una routine che mi scrive su un file log le routine chiamanti:
Private Sub ScriviSuFile(ByVal Frm As String, ByVal Sb As String)
Try
Dim FileLog As String = Microsoft.VisualBasic.FileIO.SpecialDirectories.My Documents & _
"\FileLog.txt"
Dim FileWriter As New StreamWriter(FileLog, True)
FileWriter.WriteLine("Chiamato da Form: " & Frm & Space(2) & "e Sub/Function: " & Sb)
FileWriter.Close()
Exit Sub
Catch ex As Exception
GestioneErrori(ex.Message, Err.Number)
Exit Try
End Try
End Sub
Dal Form passo il valore: System.Reflection.MethodBase.GetCurrentMethod.Name (nome routine chiamante) e ottengo un file con log tipo:
Chiamato da Form: ProvaClasse e Sub/Function: Button2_Click
Chiamato da Form: ProvaClasse e Sub/Function: Button2_Click
Chiamato da Form: ProvaClasse e Sub/Function: Button7_Click
Chiamato da Form: ProvaClasse e Sub/Function: Button7_Click
Il primo errore 9: Nessuna riga alla posizione 0 e` gestito correttamente dalla funzione di GestioneErrori ed e` previsto perche` non ci sono record nel dataset (e questo e` il caso) ma il secondo errore (nel titolo) e` imprevisto e genera la fuoriscita inaspettata e non gestita dal form chiamante.
Spero di essere stato chiaro sono pronto a postare tutto il codice dll e form chiamante per maggiore chiarezza.