152 messaggi dal 08 settembre 2006
Ciao a tutti,
sto realizzando un programma client-server con vbnet 2005 e vorrei fare una gestione errori abbastanza specifica; in particolare per quanto riguarda gli errori sul databse (sql2005) voglio mostrare i dati specifici dell'errore ma anche dove è stato generato (form e procedura); per l'accesso ai dati uso una classe (in una dll esterna al progetto) nella quale ho scritto una function che mi restituisce una stringa con codice e messaggio di errore che viene chiamata ad esempio all'apertura di un datareader :

private sub calcolaNumOrd

If objdati.apriReader Then
myReader = objdati.pMyReader
If myReader.Read Then
txtNumOrd.Text = dtpDataOrd.Value.Year & "/" & StrDup(5 - Len myReader"ultord").ToString), "0") & myReader("ultord")
End If
objdati.chudiReader()
Else
MsgBox(objdati.pErrDati, MsgBoxStyle.Critical + MsgBoxStyle.OkOnly)
End If

nell'msgbox che visualizza il messaggio vorrei però anche far vedere il nome della form e della procedura, non passando però il nome esplicito ma parametrizzando tale nome, ad esempio per la form posso fare

MsgBox(objdati.pErrDati, MsgBoxStyle.Critical + MsgBoxStyle.OkOnly,Me.name)

ma per la procedura?

ho usato, all'interno della classe la proprietà exception.stacktrace ma questa purtroppo restituisce l'elnco delle chiamate solo fino al nome della classe, quindi non mi fa vedere dati ne sulla form ne sulla sub.

E' possibile fare una cosa del genere'
grazie
Io ti suggerisco di non gestire gli errori in strati che non ne hanno la competenza. E' la form/metodo che inizia la chiamata che dovrebbe gestire le eccezione e comportarsi di conseguenza, inibendole oppure mostrandole a video.
Nel tuo caso, per esempio, farei che la tua classe rilancia una tua Exception che oltre alla InnerException originale, si porti con se altre informazioni aggiuntive che lo strato di accesso ai dati può dare.
Spetta poi alla form gestire questa nuova exception.
Ricordati inoltre che volendo puoi gestire l'evento Application.ThreadException e AppDomain.UnhandledException per beccare tutte le eccezioni

Ciao

Il mio blog
Homepage
9 messaggi dal 06 maggio 2008
Creati un paio di classi che ereditano la classe Exception, la prima la specializzi per il db la seconda la specializzi per l'eccezioni del software.
All'interno puoi getire l'errore come ti pare, puoi visualizzare l'errore, sopprimerlo, cambiare descrizione, salvarlo in modi diversi, o se è il caso puoi tentare riorganizzare le cose per by-passarlo.

E sopratutto sei sicuro che tutti i tuoi errori passeranno per le suddetti classi...

Ti piace???

Buon Lavoro

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.