Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    13

    VB6: classi e gestione errori

    Ciao a tutti,

    vi pongo un problema che spero sappiate risolvere:

    vorre creare una classe in VB6 che segnali l'eventualità di avvenuti errori al suo interno (di ogni genere!) al processo chiamante!Tipo gestione delle eccezioni in Java o VB.net..
    Ovvero gestire l'errore per mezzo del classico "On error goto errHandler" nella subrutine che utilizza la classe stessa..

    Ah, data la mia scarsa esperienza VB6 vi chiedo anche se la cosa può avere un senso!
    Altrimenti gestisco tutto direttamente nel punto in cui si verificano e buonanotte..


    Grazie 1000
    CIAO
    Mirko

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    42
    Usa l'espressione "Err.raise" per sollevare un'eccezione e gestisci con l'"on error" la stessa nel processo chiamante.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    13
    Ciao,
    grazie per l'aiuto ma avevo già scritto un codice tipo questo...

    Classe (prova)

    public sub classeprova()
    Err.raise = 6
    end sub


    Main program:
    ...
    dim app as new prova
    on Error goto errorHandler
    app.classeprova
    ...
    exit sub
    errorHandler:
    msgBox(err.description)
    end sub


    ma assolutamente non funziona se era questo che intendevi!
    Invece di intercettare con un "on Error" dovrei controllare con "if Err.Number<>0"..

    Accetto anche altre soluzioni...nella speranza che esistano!
    Non è un problema gravissimo,ma faccio fatica a digerire il fatto che debba mettere in una classe (che magari un giorno diventerà una dll!!) il riconoscimento e la gestione dell'errore!
    Preferirei lasciare la decisione di come agire all'utilizzatore finale..

    Sbaglio?

    grazie ancora
    CIAO
    Mirko

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    42
    Ciao,
    intanto c'è un "=" di troppo.
    La err.raise si usa nel modo seguente:
    Err.Raise number, source, description, helpfile, helpcontext

    Poi, che vuol dire non funziona?
    Come lanci l'applicazione? Dall'Ide o crei l'eseguibile?

    Che impostazioni hai in tools-general-error trapping?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    13
    Ciao,

    scusa le imprecisioni ma il codice l'ho scritto a memoria e VB6 non è il mio linguaggio preferito...

    Per "non funziona" intendo che la routine chiamante non intercetta l'errore avvenuto nella classe chiamata! Diciamo che prosegue l'esecuzione del codice senza gestire l'eccezione (in realtà l'errore) che ho sollevato all'interno della classe.

    Spero di non aver scritto altre castronerie e di essere stato chiaro.
    Accetto molto volentieri anche 2 o 3 righe di codice di esempio, penso sia il modo più chiaro per capire..
    Rimango in attesa..
    CIAO
    Mirko

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    13
    Ah si, scusate le dimenticanze...

    -> Come lanci l'applicazione? Dall'Ide o crei l'eseguibile?
    Lancio direttamente dall'IDE.

    -> Che impostazioni hai in tools-general-error trapping?
    Ho cercato nei menù ma non ho trovato niente del genere..se trovo ti faccio sapere!
    CIAO
    Mirko

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    42
    Perdonami è:
    Tools-options-general-error trapping.

    Fammi sapere

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    13
    ho la possibilità di selezionare 3 voci! Al momento ho la spunta su "interrompi in modulo di classe".
    Le altre due sono:
    1) Interrompi ad ogni errore
    2) Interrompi ad ogni errore non gestito

    Grazie per la tempestività!
    CIAO
    Mirko

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    42
    Seleziona la voce più in basso delle 3 e fammi sapere che succede.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    13
    Fatto.
    Si interrompe sulla chiamata al metodo della classe!
    Forse perchè l'errore nella classe non è gestito?!?!

    Per chiarezza ti posto il codice di prova che sto utilizzando:

    Modulo di classe "prova.cls"
    ' Classe di Test che genera una eccezione
    Option Explicit

    Sub overflowError()
    Err.Raise 6
    End Sub

    Form Principale
    ' Metodi della Forma Principale

    Option Explicit
    Private Sub Form_Load()
    On Err GoTo errorHandler
    Dim app As New prova
    app.overflowError <-Il compilatore in fase di esecuzione si arresta QUA!
    Exit Sub
    errorHandler:
    Dim msg As String
    msg = "Errore numero: " & Str(Err.Number) & Chr(13) & "Generato da " & Err.Source & Chr(13) & "Tipo: " & Err.Description
    End Sub
    CIAO
    Mirko

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.