Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    59

    [VB08] uso del blocco try...catch in una classe

    Avrei potuto continuare la precedente discussione (codesta), ma il problema è molto diverso, quindi...altro topic.
    Premetto che ho trovato una possibile soluzione su un libro che rifletteva un caso molto simile al mio (quello di Willis e Newsome, tanto per completezza).
    Qualche dato "in italiano": la classe persona rappresenta un "contribuente", che può essere sposato o meno. Se è sposato, ritorna 690 (la detrazione fiscale spettante per chi paga l'irpef ed è sposato), altrimenti 0.
    codice:
      Public Property isSposato() As Boolean
            Get
                Return statoCivile
            End Get
            Set(ByVal value As Boolean)
                statoCivile = value
            End Set
        End Property
        Public Function Sposato()
            Dim objPersona As New Persona
    
            If isSposato = True Then
                Return True
                statoCivile = True
                detrazioneConiuge = 690
            End If
    
            If isSposato = False Then
                Return False
                statoCivile = False
                detrazioneConiuge = 0
            End If
       
        End Function
    Ora la classe presenta la seguente eccezione (riporto il warning parola x parola)
    "La funzione 'sposato' non restituisce un valore in tutti i percorsi del codice. E' possibile che venga restituita un'eccezione dovuta a un riferimento con valore null in fase di esecuzione quando viene visualizzato il risultato."
    Ammetto che - sempre sul testo - ho trovato una spiegazione "teorica" di questo tipo di eccezione (si presenta quando si tenta di accedere alla proprietà della variabile prima di impostare la variabile stessa) e un esempio che, però, non riesco ad adattare al mio caso (e che, quindi, non vi posto nemmeno). Credo di trovarmi di fronte ad una nullreferenceexception: sbaglio?
    Per quanto riguarda il caso specifico (quello postato), come risolvo? Grazie in anticipo.

  2. #2
    Credo che le righe dopo il return non vengono eseguite in quanto il return fa ritornare l'esecuzione al chiamante...

    dimenticavo... inoltre non dichiari che tipo di ritorno ha la funzione... nel tuo caso boolean
    I database... la mia passione + o -

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    A parte che ti avevo risposto nella discussione precedente con un esempio di codice più adatto a quello che ti serviva, potevi comunque prendere spunto da quello.

    If isSposato = True Then

    con la quale ritorni al chiamante, non ha alcun senso fare la prossima If

    If isSposato = False Then

    ma soprattutto non puoi eseguire codice dopo un Return (sono le basi della programmazione queste ...)

    Infine, non si capisce a cosa serva quella

    objPersona

    mai usata all'interno della funzione ...

    Riparti dal codice che ti ho proposto nell'altra discussione ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.