esatto...in altre parole, la gestione delle eccezioni deve essere "rasoterra"...a meno che la libreria in uso non è progettata apposta, nei suoi metodi, per restituire, che so, -1 dopo aver intercettato una eccezione. in quel caso si puo' gestire l'eccezione anche a livello piu' esterno...
per es, per il login di un utente:
codice:
Namespace CustomExceptions
Public Class UtenteNonTrovatoException
Inherits ApplicationException
Sub New(Optional ByVal message As String = "Utente non trovato in archivio", Optional ByVal inner As Exception = Nothing)
MyBase.New(message, inner)
End Sub
End Class
End Namespace
e nel metodo "login" della classe "utente.vb"
codice:
.
.
.
Try
conn.Open()
cmdLogin.ExecuteNonQuery()
If cmdLogin.Parameters("@id").Value <> -1 Then
valoreritorno = 0
Else
Throw New CustomExceptions.UtenteNonTrovatoException
End If
Catch ex As CustomExceptions.UtenteNonTrovatoException
Trace.Warn("WARNING: " & ex.Message)
valoreritorno = -1
Finally
conn.Close()
cmdLogin.Dispose()
Return valoreritorno
End Try
e nella pagina aspx che istanzia la classe utente:
codice:
if utente.login = -1 then response.write("errore nel login")