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

Ho provato errReport.dll 6.2, che crea un file di log di tutti gli
errori ma non fornisce un log dettagliato dell'errore.
Ho guardato sul sito comune e anche li ce n'è uno ma troppo invasivo
!!
Qualcuno conosce un' addin per vb che gestisca gli errori e non sia
molto invasivo nel codice ?
Grazie, alcau

 ha scritto nel messaggio
news:2689d58a.04020...@posting.google.com...

io conosco MZTools: ti può mettere automaticamente i numeri di linea
all'interno di una Sub/Function. In più ti puoi scrivere una routine di
gestione errori e posizionarla nel codice attraverso MZTools.
Ti consiglio anche di dare un'occhiata a Erl, una funzione VB che ti ritorna
il numero di linea su cui è avvenuto un certo errore. A me è tornata utile
in diverse occasione, perchè il cliente ti manda un'e-mail o ti telefona
dicendoti esattamente un messaggio (scritto da te) che ti riporta il numero
di linea e tu puoi andare subito a vedere cos'è!
good coding!!!
-- 
Alletun
"Io lo so che accadrà. La voce sussurra nei miei pensieri di Jair, Rone,
Allanon e soprattutto nelle Mortombre.
Sussurra segreti che mi sono tenuti nascosti, nella grigia oppressione
di questo giorno e nell'oscurità caliginosa di quello che mi aspetta.
Saremo distrutti. Tutti."
Brin Ohmsford - La Canzone di Shannara - T. Brooks

 vedere cos'è!
Ecco, mi ha sempre interessato, ma non ho mai provato.
Chiedo:
-Cosa bisogna fare per attivare questa cosa, ovvero "chi assegna" i numeri
di linea, MZTools o sono "impliciti" in vb?
-Nel caso sia un'aggiunta di MZTools, hai un'idea (anche orientativa)
dell'incremento dell'occupazione in memoria?
Grazie.


Il tutto si usa con l'istruzione "erl" di VB, MZT rende automatica
solo la numerazione delle righe. Non so se _VB_ richiede piů memoria
per questa funzione ... che personalmente uso solo per il debug di
qualche procedura rognosa.
Ciao!

 qualche procedura rognosa.
Credo che sia fondamentale. Se "lo spazio" per Erl  č stato "lasciato" da
GWBasic (non mi sorprenderebbe affatto) allora sarebbe comunque occupato e
varrebbe la pena  di numerare tutto. Viceversa non ha senso la sua
esistenza, nemmeno in fase di debug, proprio perchč il debug č assistito
dall'IDE...
Quel che piů mi manca č sapere con certezza qual č la riga che ha provocato
un errore...

 provocato un errore...
dovrebbe appunto dirtelo l'Erl, se la riga è numerata
--
Salutoni
Sergio
per rispondere... togli il group dall'indirizzo

 dovrebbe appunto dirtelo l'Erl, se la riga è numerata
Ho capitooooo, ma vorrei capire se questo nell'EXE presso l'utente mi
consuma, 0, 1, 1000 o 10000 Kb di memoria :-P

 consuma, 0, 1, 1000 o 10000 Kb di memoria :-P
ah... scusa. interpreto solo ora la tua frase.
comunque... prooova, e facci sapere. (anzi, secondo me stai già provando)



Infatti io intendevo debug di una funzione che il cliente già usa, e
che ogni tanto da problemi ... casi difficilmente riproducibili in
ufficio.
Ciao!

 Ciao!

Se per caso mi dimentico di inserire un controllo che non permetta di
inserire testo in una casella dove i valori devono essere solo
numerici e distribuisco l'applicazione vorrei che nel log degli errori
mi apparisse anche il valore inserito dall'utente.
Inserendo il file gestione_errori.bas dell'applicazione del sito
comune (gesterror) e aggiungendo nella gestione errori di MZT queste
righe:
On Error GoTo GestioneErrori
 {PROCEDURE_BODY}
Exit {PROCEDURE_TYPE}
GestioneErrori:                                              
  Dim RispUser As VbMsgBoxResult
  If Err.Number > 0 Then
    RispUser = ErrorHandler ("{PROCEDURE_NAME}","")
    Select Case RispUser
      Case vbRetry
        Resume
      Case vbAbort
        End
      Case vbIgnore
        Resume Next
    End Select
  End If
mi viene creato un log error (che poi può essere spedito via mail) che
contiene
il nome del modulo dove è avvenuto l'errore e il valore inserito ma
non riesco a risalire dalla routine di partenza.
cioè
Se parto da un calcolafattura (nella quale c'è la gestione degli
errori) ed ad un certo punto di questa funzione controllo uno dei
valori con una sub esterna (nella quale anche lì c'è la gestione degli
errori) e viene generato un'errore nel log vedrò il nome dell'ultimo
modulo dove si è verificato l'errore ma non so da dove sono partito.
Mentre scrivevo e rileggevo ho preso la balla :-)
alcau

 consuma, 0, 1, 1000 o 10000 Kb di memoria :-P
umh, bella domanda. Ti posso dire che i numeri di linea che MZTools aggiunge
al tuo codice non sono nient'altro che etichette, per cui non credo che
facciano aumentare di dimensioni il tuo exe finale.
Però, insomma, il dubbio ce l'ho. Per visualizzarti correttamente Erl
durante l'esecuzione, vuol dire che l'informazione da qualche parte deve
essere salvata, per cui.....boh.....
Il fatto che a run-time il programma possa visualizzare "Errore alla linea
1160" vuol dire che quel numero c'è.
Domanda: cos'è un etichetta? Mi rispondo: è un marcatore "leggibile" per un
indirizzo di memoria, dove c'è una particolare istruzione, giusto? se ad
ogni locazione di memoria viene "associata" una label (numerica oppure no),
allora, mi contraddico, l'exe aumenta......giusto?
risposta finale? sì, no, boh, non so/non rispondo, non credo


 credo che facciano aumentare di dimensioni il tuo exe finale.
6500 istruzioni non etichettate: 413K
6500 istruzioni etichettate: 462K
In memoria l'incremento potrebbe essere proporzionale.
In Assembly e in C le etichette vengono trasformate in inidirizzi e non
occupano memoria:
semplicemente tali indirizzi vengono sostuituiti nel codice macchina
risultante (in molti casi sotto forma di offset).
In Vb evidentemente la cosa funziona diversamente
termoPilucco, telegrafico

 6500 istruzioni etichettate: 462K
Grazie. Faccio a meno di Erl... ;-)