Prima di parlare direttamente della try catch end try , intendo partire dalla gestione di un eccezione/errore in linguaggi COM e Win32, Come il Visual Basic 6.0 ,la gestione dell'errore si basava sulla clausola On error, tramite la quale , era possibile rimandare a un determinato blocco di codice. La clausola On error permetteva inoltre tramite un "Particolare" oggetto di nome Err che identificava gli errori restituendo valori , si trattava comunque di un identificazione numerica di un errore Esempio : HRESULT x 00128371
IL Net framework invece ha sostituito questo ingarbugliato modo di gestire l'eccezione usando un Blocco preciso è una Classe : system.Exception
da cui derivano tutti gli altri !
D'altro canto c'è da dire che le differenze sono abissali , nel net framework tuttora esiste l'oggetto Err e On error , ritenuto utile per gestire errori di tipo Unmaneged(quindi indipendenti dal Garbage Collector) oppure in caso si usassero oggetti COM (tra i più famosi cito winsock)
La Classe System Exception
è una classe che tutti conoscono , in quanto serve per gestire gli errori di un applicazione , il try catch è presente in tutti i linguaggi .net come il C#,J# , asp.net etc.. è presente anche in altri linguaggio che non sfruttano il net framework come il php e il C++ etc...
Quindi è un istruzione , fondamentale per qualsiasi applicazione , perchè non esiste applicazione che non lanci un eccezione, persino la moltiplicazione di due numeri può lanciare un eccezione di overflow!
Vediamo come è formato il Costrutto Try catch
Try
Codice "Sospetto"
Catch ex As Exception
//gestione errore
Finally
// Si tratta di codice di Cleanup , utilizzato per liberare risorse indipendentemente dalla creazione di eccezione o meno
End Try
Non gestire un errore comporta il blocco dell'applicazione. Vediamo come si comporta il "gestore" dell'errore nel momento in cui viene lanciata un "eccezione"
I membri Comuni Nella Classe Exception (quindi disponibili anche nelle classe derivate dal system.exception)
Nome Descrizione
Message Contiene la descrizione di un errore
Source Contiene il Nome dell'assembly che ha causato l'eccezione
StackTrace Lo stack chiamante che ha generato l'eccezione, Quindi possiamo capire il codice "Sospetto"
Data Contiene Info Dettagliate sull'errore
HelpLink Si tratta di una proprietà che permette di indirizzare l'utente su un Url
InnerException Un oggetto particolare che può contenere un eccezione più specifica
ToString Metodo derivato da system.object , ridefinito per restituire il messaggio (message) e lo stack chiamante (stackTrace)
Bene questi sono i membri presenti nel system.exception
Vediamo qualche esempio Semplice dopodichè passiamo all'ultima parte della guida , creare gestori di eccezioni personalizzate
in un Try possono essere anche presenti più catch e end try
Vediamo un ultimo esempio includendo anche finally
il blocco Finally si può notare che chiude il flusso di scrittura di x!
2°PARTE --- ECCEZIONE PERSONALIZZATE
Creare L'eccezione Personalizzate , sfrutta due cose fondamentali del Vb.net : Ereditarietà e Polimorfismo!
Ci sono poche regole da sapere per creare una classe con eccezioni personalizzate :
1) La classe creata deve derivare da System.exception o da ApplicationException
2) La Classe deve terminare con il nomeException
3) I membri devono essere naturalmente Poliformici
Come si nota , se il label1.text è diverso dalla textbox1.text
Throw new ' Lancia Un eccezzione
La intercetta naturalmente nel catch che avrà il nome della classe creata Errore01Exception
Nella classe errore01exception ho ereditato da system.exception Tramite Inherits
nel Caso di Data non modifico nulla anche se uso Overrides 'si può anche eliminare
Nel secondo caso Modifico il Valore di ritorno (Message)
Nel Terzo Caso uso Shadows che cambia Completamente la proprietà infatti la rendo solo readonly e modifico il Valore Restituito come nella precedente Proprietà
Spero Questa Guida Sia Utile!
IL Net framework invece ha sostituito questo ingarbugliato modo di gestire l'eccezione usando un Blocco preciso è una Classe : system.Exception
da cui derivano tutti gli altri !
D'altro canto c'è da dire che le differenze sono abissali , nel net framework tuttora esiste l'oggetto Err e On error , ritenuto utile per gestire errori di tipo Unmaneged(quindi indipendenti dal Garbage Collector) oppure in caso si usassero oggetti COM (tra i più famosi cito winsock)
La Classe System Exception
è una classe che tutti conoscono , in quanto serve per gestire gli errori di un applicazione , il try catch è presente in tutti i linguaggi .net come il C#,J# , asp.net etc.. è presente anche in altri linguaggio che non sfruttano il net framework come il php e il C++ etc...
Quindi è un istruzione , fondamentale per qualsiasi applicazione , perchè non esiste applicazione che non lanci un eccezione, persino la moltiplicazione di due numeri può lanciare un eccezione di overflow!
Vediamo come è formato il Costrutto Try catch
Try
Codice "Sospetto"
Catch ex As Exception
//gestione errore
Finally
// Si tratta di codice di Cleanup , utilizzato per liberare risorse indipendentemente dalla creazione di eccezione o meno
End Try
Non gestire un errore comporta il blocco dell'applicazione. Vediamo come si comporta il "gestore" dell'errore nel momento in cui viene lanciata un "eccezione"
I membri Comuni Nella Classe Exception (quindi disponibili anche nelle classe derivate dal system.exception)
Nome Descrizione
Message Contiene la descrizione di un errore
Source Contiene il Nome dell'assembly che ha causato l'eccezione
StackTrace Lo stack chiamante che ha generato l'eccezione, Quindi possiamo capire il codice "Sospetto"
Data Contiene Info Dettagliate sull'errore
HelpLink Si tratta di una proprietà che permette di indirizzare l'utente su un Url
InnerException Un oggetto particolare che può contenere un eccezione più specifica
ToString Metodo derivato da system.object , ridefinito per restituire il messaggio (message) e lo stack chiamante (stackTrace)
Bene questi sono i membri presenti nel system.exception
Vediamo qualche esempio Semplice dopodichè passiamo all'ultima parte della guida , creare gestori di eccezioni personalizzate
Codice:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
in un Try possono essere anche presenti più catch e end try
Vediamo un ultimo esempio includendo anche finally
Codice:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
il blocco Finally si può notare che chiude il flusso di scrittura di x!
2°PARTE --- ECCEZIONE PERSONALIZZATE
Creare L'eccezione Personalizzate , sfrutta due cose fondamentali del Vb.net : Ereditarietà e Polimorfismo!
Ci sono poche regole da sapere per creare una classe con eccezioni personalizzate :
1) La classe creata deve derivare da System.exception o da ApplicationException
2) La Classe deve terminare con il nomeException
3) I membri devono essere naturalmente Poliformici
Codice:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
Come si nota , se il label1.text è diverso dalla textbox1.text
Throw new ' Lancia Un eccezzione
La intercetta naturalmente nel catch che avrà il nome della classe creata Errore01Exception
Nella classe errore01exception ho ereditato da system.exception Tramite Inherits
nel Caso di Data non modifico nulla anche se uso Overrides 'si può anche eliminare
Nel secondo caso Modifico il Valore di ritorno (Message)
Nel Terzo Caso uso Shadows che cambia Completamente la proprietà infatti la rendo solo readonly e modifico il Valore Restituito come nella precedente Proprietà
Spero Questa Guida Sia Utile!
Ultima modifica: