F fabio2222 Member Dec 9, 2013 #1 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
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
Orazio8909 Member Licensed User Longtime User Dec 11, 2013 #2 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..
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..
H holdemadvantage Active Member Licensed User Longtime User Dec 11, 2013 #3 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
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
LucaMs Expert Licensed User Longtime User Dec 11, 2013 #4 Pensare che non ho mai trappato in vita mia