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:
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.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); } }

Rispondi quotando