Newsgroup: it.comp.lang.visual-basic
Titolo: Gestione degli errori...domanda!!!

Salve,
come da subject (ma scrivo sempre le stesse cose!! Ma sono finto?!)
una domandina sulla gestione degli errori. Supponiamo che io ho questo
codice di esempio, (ora davanti ho questo, non mi andavo di inventarmi
qualcosa e allora ho preso questo :)) tanto un esempio vale un altro)
Private Sub Command1_Click()
    Dim Connessione As adodb.Connection
    Dim rcCombo As adodb.Recordset
    Dim strSql As String
 
-->On Error GoTo formerror
 
    Set Connessione = New adodb.Connection
    Connessione.ConnectionString = "xxxxxxxxxx"
    Connessione.Open
 
    strSql = ""
    strSql = "SELECT xxxxxxx FROM xxxxxxx"
 
    Set rcCombo = New adodb.Recordset
    Set rcCombo.ActiveConnection = Connessione
    rcCombo.CursorType = adOpenForwardOnly
    rcCombo.Open strSql
 
-->On Error GoTo formerror
 
    Do While Not rcCombo.EOF
        cmbUtenti.AddItem rcCombo!pippo & _
                          rcCombo!pluto & _
                          rcCombo!paperino
        rcCombo.MoveNext
    Loop
 
    rcCombo.Close
    Set rcCombo = Nothing
    Set Connessione = Nothing
 
    Exit Sub
 
formerror:
    Call MsgBox("Errore:" & Err.Number, vbCritical)
End Sub
Se io non mettessi il secondo GoTo, il primo, messo prima di tutte le
istruzioni (li dove si trova ora), riuscirebbe a beccare qualunque
errore si verifica nella Sub?
Se cosě non fosse, ne dovrei mettere uno ad ogni
istruzione..."pericolosa"?
Saluti...

 [...]
La prima (e l'unica) che hai detto. :)
Clansman

>La prima (e l'unica) che hai detto. :)
Quindi non ha senso mettere più un GoTo, ma basta metterne uno solo
all' inizio della sub, che qualunque errore ho in qualunque parte del
codice me lo becca quello? E' così che funziona?
Saluti...

 ha scritto nel messaggio
news:3a34af1c...@news.enter.it...



in genere ne basta uno, ma in alcune situazioni puo' essere
necessario mettere un resume next.
on error goto ErrorHandler
... fai qualcosa qui...
on error resume next
variabile = dir(nomefile)
if (variabile <> "") and (err.number <> 0) then list1.add variabile
on error goto errorhandler
...fai qualcos'altro
exit sub
errorhandler:
msgbox "errore"
l'istruzione dir puo' essere utilizzata per verificare l'esistenza
di un file. se viene controllata la presenza di un file su A:
e non c'e' un floppy inserito, non voglio assolutamente che
mi si presenti un messaggio di errore stadard per questo.
--
Fibia "Sakamoto" FBI
URL: 
www.geocities.com/fibiafbi
E-Mail: 
fibi...@hotmail.com
ICQ UIN 63586057
Membro #25 delle Brigate Takahashi Sez. Sud

la gestione degli errori dovrai riscrive ON ERROR GOTO ....
Cioč? Con Error Resume Next che accade?

msgbox "errore"
Saluti, natalizi...

Vorrei ricordare, solo perchè non è stato citato, che mettendo:
On error goto 0
si disabilita la gestione degli errori.
Inoltre ricordati che la gestione degli errori viene attivata dalla linea On
error goto errorhandler ed è attiva per tutto il codice seguente all'interno
della routine ed all'interno di tutte le routine richiamate da essa.
Ad esempio:
Sub Prova()
    On error goto errorhandler   'da qui in poi la gestione degli errori è
attiva
    faccio qualcosa...
    CALL FaiQuancosa()
    faccio qualcosa...
    exit sub
errorhandler:
    msgbox err.description
End Sub
Sub FaiQuancosa()
    'Se in questa routine viene generato un errore questo verrà gestito
nella sub Prova
    'naturalmente solo se questa routine è stata richiamata da Prova
    faccio qualcosa...
End Sub
Ciao... Maurizio

Dai un occhiata a questo esempio se ti chiarisce le idee
sull'uso di "on error ..."
public sub Esempio()
'Dopo l'istruzione "on error goto ..." qualsiasi errore
'si verifichi viene intercettato richiamando la label
'ErrorHandler.
on error goto ErrorHandler
   ...Istruzione 1...
   ...Istruzione 2...
   ..................
   ...Istruzione 10...
'Dopo "on error resume next" qualunque errore viene ignorato
'Esempio: se l'istruzione 11 genera un errore, tale viene
'         ignorato e si passa all'istruzione successiva.
on error resume next
   ...Istruzione 11...
   ...Istruzione 12...
   ..................
   ...Istruzione 20...
'Ripristina l'istruzione "on error goto ErrorHandler"
on error goto errorhandler
   ...Istruzione 11...
   ...Istruzione 12...
   ' Elimino file che potrebbe non esistere
   Kill "c:\temp\pippo.txt"
   ..................
   ...Istruzione 20...
exit sub
errorhandler:
'Volendo qui è possibile ignorare certi tipo di errore,
'Esempio: se il file "c:\temp\pippo.txt" non esiste
'         intercetterò l'errore 53, in tal caso voglio
'         proseguire.
   If Err.Number = 53 Then Resume Next
 
   msgbox .....
end sub
Ciao Stefano
--
TiscaliNet, libero accesso ad Internet.
http://www.tiscalinet.it
-- 
Posted from 
twingo.tiscalinet.it
 [195.130.224.85] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 >msgbox "errore"
--


 Cioè? Con Error Resume Next che accade?