Newsgroup: it.comp.lang.visual-basic
Titolo: On Error

Quando intercetto un errore è possibile conoscere la riga di codice in cui
questo si è verificato?
Grazie
Ciao

 Ciao
Mik

 ha scritto nel messaggio
news:bafs26$o1f$1...@usenet.itgate.net...


 il concetto di "riga di codice" non esiste più....
Ma perche' parlare se non si sanno le cose?!
La riga dove si verifica un errore e' data dalla funzione Erl (che sta per
Error Line) a patto che le righe siano numerate. Con MZTools (Addon freeware
per VB) mi pare che ci sia un tool per numerare le righe di tutto il
progetto automaticamente.
Un esempio riduttivo:
Private Sub Form_Load()
10:    On Error Resume Next
        'Abilita il Print sul form
20:    Me.AutoRedraw = True
        'Divide per 0
30:    Me.Print "2/0=" & CStr(2 / 0)
        'Stampa il numero di riga dove si e' verificato l'errore
40:    Me.Print "Erl=" & Erl
End Sub
Naturalmente la gestione degli errori mediante il numero di riga e' obsoleta
e poco elegante.
Un esempio di corretta gestione degli errori (MZTools aiuta anche in questo)
dovrebbe prevedere una funzione che fa il log dell'errore su disco, ad
esempio:
Private Sub LogError(ByVal msg As String)
    Dim fn As Integer
    On Error GoTo LogError_Error
    fn = FreeFile
    Open App.Path & "\error.log" For Append As #fn
    Print #fn, Format$(Now, "yyyymmdd|hh:mm:ss|") & msg
LogError_Error:
    Close #fn
End Sub
Ed una gestione con etichette di questo tipo:
Private Sub [NomeRoutine]()
    On Error GoTo [NomeRoutine]_Error
    'Codice della Routine
    Exit Sub
[NomeRoutine]_Error:
    LogError Err.Number & "|" & _
             Err.Description & "|" & _
             "[NomeRoutine]" & "|" & _
             "[NomeModulo]"
End Sub
Se vuoi fare una prova:
Private Sub TestDivisionByZero()
    On Error GoTo TestDivisionByZero_Error
    MsgBox CStr(2 / 0)
    Exit Sub
TestDivisionByZero_Error:
    LogError Err.Number & "|" & _
             Err.Description & "|" & _
             "TestDivisionByZero" & "|" & _
             "Form1"
End Sub
Private Sub Form_Load()
    Call TestDivisionByZero
End Sub
hth,
Lokar
-- 
Sito Comune: 
http://www.it-lang-vb.net/
Manifesto: 
http://www.it-lang-vb.net/docs/Manifesto.txt
UGIdotNET - 
http://www.ugidotnet.org

Grazie mille Lokar!
Ci hai risolto un bel pò di problemi!
Qui mi hanno detto di assumerti! Ti interessa?! ;-))
Ciao

 Qui mi hanno detto di assumerti! Ti interessa?! ;-))
Qui dove e con quanti zeri si scrive "assumerti"? ;)


e con quanti zeri si scrive "assumerti"? ;)
Si scrive con:
- Sauna, vasca indromassaggio, doccia con idromassaggio, sala relax,
palestra, ping pong, e molto altro...

 palestra, ping pong, e molto altro...
Tutte cose belle e divertenti... ma che non permettono l'acquisto di generi
di necessità nei negozi! ;-)


 Senza offesa per l'intervento di Lokar, ma se "li" da te assumono per cosě
poco, state messi un po male eh!
Ciaoo
--------------------------------
Inviato via 
http://usenet.libero.it

 poco, state messi un po male eh!
Miiiiiiii scherzavo ragazzi! Io sono un misero programmatore e non valgo un
c...o e soprattutto non decido assunzioni e robe del genere. Era un modo
come un'altro per ringrazie lokar

 e molto altro...
A parte quanto detto da Lord Rayden (condiviso al 100%), dove lavori, in una
palestra? ;)
Happy Coding =)


 Lokar
Anch'io sto a Roma,Roma EST
--
Morfeus®
Free Joint
:PII

 Anch'io sto a Roma, Roma EST
          *MASTICAZZI?!?*


           *MASTICAZZI?!?*
non ho parole ma se devo dirne 2
ma vaffakolar

 [SNIP]
Offro le mie piu' sentite scuse al newsgroup per la mia vergognosa caduta di
stile.
A commento, ma non a giustificazione, del fatto, posso solo dire che Morfeus
mi ha decisamente esaurito e che da questo momento e' il primo nick
*realmente* nella mia Kill-list.
Rinnovo ancora le mie scuse,
Lokar


Non importa Lokar, riamani sempre il nostro maestro!
Cmq troppo figo il MZTools!!! Sei un Signor!!
Ciao

 40:    Me.Print "Erl=" & Erl
40:    Me.Print "Erl=" & CStr(Erl)
La fretta... ;)


 *realmente* nella mia Kill-list.
Eheeeeeeeeee?Ma cos'è questa cosa? una minaccia? Dalle mie parti,e *non*
sono le tue, le minacce vengono prese molto, ma molto, te lo dico un'altra
volta, MOLTO SUL SERIO, *pesa le parole* e non aggiungo altro. 
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Eheeeeeeeeee?Ma cos'è questa cosa? una minaccia?
Kill-list, anche detto killfile, bozo-bin o in altri dieci modi...
è l'elenco degli utenti filtrati. Cioè ha inserito il tuo nome e/o nick
e/o indirizzo e-mail in un filtro nel suo newsreader per evitare
d'ora in poi di leggere i tuoi messaggi.
Si usa dire anche:
*PLONK*
^K
score -9999
e altro che non mi viene in mente.
Un Paperino silent plonker (di solito).

 Era un modo come un'altro per ringrazie lokar
Simone non dare retta a questi, senti domani arrivo verso pranzo, posso fare
uno spuntino prima della sauna ?
PS: con quante tette si scrive "qui da noi" ?
^_____________^
Happy coding
-- 
<Gigio2K>
Sito Comune
Nokia -> I.T.H.N. -> 
http://www.ithn.it/
VB -> I.C.L.VB -> 
http://www.it-lang-vb.net/

 ha scritto

yap :)
in sostanza: non e' che ti manda dei killer sotto casa. semplicemente, non
vede piu' i tuoi messaggi, a meno che qualche burlone non li citi
integralmente nei reply :)
ciao, a.

 PS: con quante tette si scrive "qui da noi" ?
http://clan.gamesnet.it/odsr/gigio/smiles/168.gif
Un Paperino spammer.

 burlone non li citi integralmente nei reply :)
http://clan.gamesnet.it/odsr/gigio/smiles/hihi.gif
http://clan.gamesnet.it/odsr/gigio/smiles/party04.gif
Bye, G.

 Un Paperino spammer.
eh eh , prima o poi riuppo tutte le faccine e ve le faccio votare ^_-
immaginate una ver di ouquotefix personalizzata per iclvb ^_^


:-/ roargh.gif
GRRR 022.gif
grrr 022.gif
gne 014.gif
gnegne 014.gif
gnegnegne 014.gif
gnegnegnegne 014.gif
:-P a_smil10_1_.gif
:-Ş a_smil10_1_.gif
Bye, G.

 Stavo giusto provando queste:
salvate ^_^
Volevo mettere online una cosina ma l'ftp di lycos e' andato a ninna grr
sara' per lunedi oramai !



  Era una battuta naturalmente!
Ciao


> il concetto di "riga di codice" non esiste più....
Esiste nuovamente in 
VB.NET
 il cui error può restituire anche il numero di
riga
che ha generato l'errore. Mentre in VB6 si possono numerare semplicemebte le
righe
10  Do While Forms.Count > 1
20    Unload Forms(1)
30    Forms.Refresh
40  Loop
In questo modo se viene generato un errore puoi sapere a quale riga...
Ciao
pEIO


>   Era una battuta naturalmente!
Ok tranquillo!
Ciao Buona Giornata!!