Newsgroup: it.comp.lang.visual-basic
Titolo: [ERR] Cosa sbaglio sulla gestione dell'errore ?

Ciao a tutti
Allego un pezzo di una prova per una DLL che sto sviluppando.
Il problema è la gestione dell'errore voglio intercettare se mi è stata
passata una path (m_ConnString) o un nome tabella errato m_Table,
ma mi becco l'errore di sistema ed a ErrHnd1 non c'arrivo mai.
Dove sto sbagliando ?
    [CUT]
    On Error GoTo ErrHnd1
    Set CN = New ADODB.Connection
    CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & m_ConnString &
";Mode=Share Deny Read|Share Deny Write;Persist Security Info=False"
        Set RS = New ADODB.Recordset
        RS.ActiveConnection = CN
        RS.CursorType = adOpenKeyset
        RS.Open m_Table, CN
Uscita:
    Exit Sub
ErrHnd1:
    Call MsgBox("Attenzione non è stato possibile collegarsi al dabase
richiesto." _
                & vbCrLf & "Controllare il percorso, il nome file ed il nome
tabella." _
                & vbCrLf & "Err.Num. = " & Str(Err.Number) _
                , vbCritical, "Errore di collegamento !")
    GoTo Uscita
End Sub
Grazie a tutti
JKLJKL

 Dove sto sbagliando ?
Prima di proseguire:
il problema ti si verifica debuggando nell' IDE o con l' eseguibile?
Se fosse il primo caso, verifica che in Tools / Options / General
il flag di Error Trapping non sia su "Break in class module", che
e' l' impostazione predefinita quando installi VB.
E, come tutte le impostazioni predefinite dei prodotti Microsoft,
a partire dal sistema operativo, combina sempre dei casini :-(
--
ciao, hal
--------------------------------
Inviato via 
http://usenet.libero.it

 wrote in message
62Z110Z171Z29Y1...@usenet.libero.it...

Grazie Hal !
Avevo "l'intercettazione degli errori" su "Interrompi ad ogni errore" per
vari casini ho dovuto riformattare il PC del cliente (vermacci !!) e mi sono
lisciato l'impostazione, in + (ora sono dal cliente) in rete girano altri
virus
e sono concentrato a non beccarmeli.
JKLJKL

 [SNIP]
Oltre a quanto gia' segnalato da Hal, ti suggerisco di modificare la
gestione dell'errore aggiungendo come ultima riga:
On Error GoTo 0
Cio' indica al programma di disattivare la gestione degli errori per gli
eventuali errori successivi nella routine corrente, in particolare se
avviene un Resume, o se si salta ad un'altra etichetta all'interno della
stessa routine dove viene eseguito altro codice.
Inoltre, nella gestione degli errori, non hai bisogno di un'etichetta
Uscita (ed un GoTo a tale etichetta) a meno che tu non esegua, sotto
l'etichetta Uscita, operazioni di terminazione (es. impostazione a
Nothing di riferimenti, ecc.). La Sub infatti dopo la gestione
dell'errore, termina normalmente con l'End Sub, senza bisogno di saltare
ad una riga dove l'unica istruzione e' Exit Sub.
hth,
Lokar
--
Sito Comune: 
http://www.it-lang-vb.net/
Manifesto: 
http://www.it-lang-vb.net/docs/Manifesto.txt

 wrote in message
anup2a$hl01h$1...@ID-158338.news.dfncis.de...

Grazie molte per la precisazione, ma è una gestione dell'errore mia
standard.
Uso sempre quella per comodità così come dicevi tu  mi creo uno spazio
apposito se all'uscita della routine devo settare delle var. ad un valore
preciso
JKLJKL
de

 preciso
A maggior ragione e' necessario onde evitare loop perversi ed errori
incomprensibili aggiungere "On Error GoTo 0" *prima* di saltare alla
nuova etichetta o al limite "On Error Resume Next" come prima istruzione
della nuova etichetta: se dovesse sorgere un errore all'interno della
(chiamiamola cosi') "terminazione" la routine salterebbe nuovamente
all'etichetta di gestione degli errori, creando un "simpatico" loop
infinito ;)
Happy Coding =)
