Italian Chiarimenti su un codice

fabio2222

Member
Salve a tutti purtroppo vorrei gestire degli errori di run time.
In vb 2008 il codice si doveva iniziare cosi: on error goto....
Io ho trovato una cosa simile però non ci ho capito molto mi potete spiegare questo codice:

Sub SomeSub
Try
...some code...
Catch [only executes if error above]
Log(LastException) [optional]
...optional code for error correction...
EndTry
...optional additional code...
End Sub
 
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..
 
on error goto [label] non esiste in b4a
puoi usare try catch per trappare gli errori
Una volta che hai individuato l'istruzione che ti genera l'errore (in debug)
devi scrivere

Code: Copy
Try
[istruzione]
catch
[istruzioni nel caso l'errore sia generato]
End try

Es.
Code: Copy
dim bitmap1 as bitmap
Try
bitmap1.loadbitmap(file.dirassets,"uno.jpg")
catch
msgbox("uno.jpg non esiste!","")
end try

Come vedi tra catch / end try trovi il messaggio che compare solo se non hai nessun file "uno.jpg" nella directory "File"
Hope this helps :)
 
Back
Top