Ciao fabio, io personalmente utilizzo il try catch per una questione di semplicità, on error goto è ormai superato in dot.net.. cerco di spiegarti tutto il try catch in poche semplici parole:
come ben sai, il try catch viene utilizzato per la gestione degli errori del software o nel caso in cui si presenta un errore imprevisto, e viene inserito all'interno di una sub o routine. tutto il codice che sta all'interno fra TRY e CATCH e il codice che metti tu per eseguiere determinate operazioni o eventi ecc... metre il codice che metti fra catch e end try e il codice per gestire il tuo errore. ti faccio un esempio banale sulla gestione dell'errore di una seriale.
private function con_seriale as integer
With Seriale
.ParityReplace = &H3B
.PortName = con
.Parity = IO.Ports.Parity.None
.DataBits = 8
.StopBits = IO.Ports.StopBits.One
.Handshake = IO.Ports.Handshake.None
.RtsEnable = False
.ReceivedBytesThreshold = 1
.NewLine = vbCr
.ReadTimeout = InfiniteTimeout
End With
Seriale.Open()
call ricevi_dati() 'funzione che vai a richiamare per la ricezione dei dati dalla seriale
end function
private function ricevi_dati() as string
try
'qui andrai ad inserire la routine che serve per la ricezione dei dati dalla seriale.
'metti il caso che per errore viene staccata la seriale dal pc o metti il caso che la scheda con cui stai comunicando impazzisce e perde la comunicazione e tu stai ricevendo dati ogni 500ms ( senza try catch avrai un errore del tipo: (porta COM chiusa) ) invece inserendo il try catch il programma non vede piu la comunicazione e va immediatamente sul catch e esegue il codice per gestire il tuo errore, in questo caso la prima cosa che andrai a fare è quello di vedere se la comunicazione è ancora aperta e di chiuderla..
Catch ex As Exception
'gestisco l'errore della comunicazione
if seriale.isopen = true then ' se la seriale è ancora aperta
seriale.close() 'chiudo immediatamente la comunicazione e visualizzo un messaggio di errore
msgbox("ERRORE DI COMUNICAZIONE")
end if
end try
end function
spero di essere stato chiaro..