Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    20

    NullReferenceException non gestita

    Salve a tutti mi chidevo se potreste analizzare questo breve codice preso da un mio programmino per visualizzare video che genera all'interno di un blocco catch una NullReferenceException per me senza motivo.

    Il codice è un evento click di un pulsante che dovrebbe servire a cambiare il video visualizzato con un altro a scelta dell'utente il cui indirizzo viene inserito in una text box. Utilizzo un blocco try catch per gestire le eccezione sollevate da un indirizzo errato o nullo.
    Il messaggio che dovrebe comparire se viene generata l'eccezione, all'interno del blocco catch, ne fa generare un altra che non viene gestita, se lasciassi il blocco catch vuoto all'interno invece l'eccezione provocata dall'indirizzo errato verrebbe gestita normalmente e non si creerebbe l'ulteriore NullReferenceException, ma l'utente finale non potrebbe essere informato di ciò che è avvenuto.

    Ecco il codice:

    codice:
    private void button2_Click(object sender, EventArgs e)
           {
               //nel programma vi è un timer che serve a calcolare regolarmente a che punto è arrivato il video per aggiornare la barra di avanzamento, il timer viene disattivato quando si cambia video
               timer1.Enabled = false;
               //il video precedente viene messo in pausa
               Video1.Pause();
               //metto un blocco try catch per gestire eventuali eccezioni sollevate dall'inesistenza del video
               try
               {
                   //Io durante il Debug non inserisco alcun indirizzo per testare il blocco try-catch
                   Video1.Open(textBox1.Text);
                   //L'eccezione causata dall'indirizzo nullo viene gestita normalmente mentre se ne crea un altra più avanti
               }
               catch (System.Exception ex)
               {
                        //Si genera una "NullReferenceException" e visual studio fa comparire ilsolito messaggio di quando succede un'eccezione dicendo "Riferimento a un oggetto non impostato su un'istanza di oggetto" ed evidenzia in giallo l'istruzione qua sotto                          
                       MessageBox.Show(ex.Message);
                   
               }
            }
    Avevo precedentemente fatto un' altra discussione dove chiedevo un metodo per risolvere il problema e mi avevano consigliato di utilizzare un blocco if per verificare prima se il file esisteva(che tra virgolette ha funzionato), ma lo scopo di questa discussione non è trovare un modo per sorvolare il problema, vorrei solo capire perchè viene generata questa eccezione, in modo da non ricadere sugli stessi errori in un prossimo programma simile a questo. Vi ringrazio in anticipo per l'attenzione e spero che qualcuno possa rispondere alla mia domanda che forse può essere anche banale per molti. Specifico inoltre che per la visualizzazione del video utilizzo le librerie Microsoft.DirectX e Microsoft.DirectX.AudioVideoPlayback nel caso possa essere rilevante.

  2. #2
    ciao, sono sempre quello della soluzione dell'IF dell'altro thread

    ma hai copiato male il codice o hai scritto veramente:

    MessageBox.Show(ix.Message);

    ex... non ix

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    20
    Originariamente inviato da KataKlism2002
    ciao, sono sempre quello della soluzione dell'IF dell'altro thread

    ma hai copiato male il codice o hai scritto veramente:

    MessageBox.Show(ix.Message);

    ex... non ix
    nono questo di ix è stato un errore di battitura fatto adesso scusate
    IL codice con cui ho fatto il Debug è tutto giusto da questo punto di vista, e nel codice postato sopra ho provveduto a correggere.

  4. #4
    metti un breakpoint su:

    MessageBox.Show(ex.Message);

    si ferma al breakpoint?

    se si, prima di eseguire quell'istruzione vedi cosa vale ex da debugger, è null?

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    20
    Allora prima di tutto ti devo ringraziare per esserti interessato al mio problema.
    Ho fatto quello che hai detto, anche se posso vedere il valore di ex senza mettere il brakpoint perchè l'istruzione si ferma li lo stesso a causa dell'eccezione.

    Mi dice che ex è una Microsoft.DirectX.DirectXException e che la source che anche se non so cos'è immagino sia la sorgente dell'errore(ma non ne sono sicuro) è Microsoft.DirectX.AudioVideoPlayback.
    Il fatto è che però questa eccezione viene gestita con successo, è invece il MessageBox che compare in seguito alla gestione dell'errore che fa generare un'ulteriore eccezione: appunto una NullReferenceException.

  6. #6
    prova a sostituire ex.message con ex.stacktrace

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    20
    Originariamente inviato da KataKlism2002
    prova a sostituire ex.message con ex.stacktrace
    Allora ho provato a cambiare ma l'errore si genera lo stesso, fra l'altro si genera anche se io metto nel messageBox una stringa tipo "ciao".
    Non capisco il motivo di questo errore!

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.