Abbiamo visto fin'ora strutture condizionali, tipo l'if e strutture di loop tipo il do e il for. Ci rimane da vedere la struttura Try Catch, che serve per gestire gli errori o le eccezioni sollevate dai nostri programmi. Quindi le exception cosa sono? Quando il nostro programma gira, può capitare che incappi in situazioni dal quale non può più dipanarsi. Esempio divisione per zero, o un file che non trova sull'hard disk. Allora non potendo più andare avanti solleva un eccezione, questo tipo di eccezione può essere intercettata con la struttura Try Catch. Il programmatore può intercettare questa situazione di errore e gestirla al meglio, può mandare un messaggio di errore all'utente oppure la può sopprimere se non è un eccezione che rileva ai fini del programma. Quindi questo nuovo tipo di struttura che serve per intercettare e gestire le eccezioni.
Sintassi
Vediamo la sintassi in VB: tra il try ed il catch si mettono le istruzioni che possono generare l'errore. Tra il catch ed il Finally si possono mettere le istruzioni nel caso si verifichi un errore cioè un eccezione. Il linguaggio permette di distinguere tra diverse eccezioni. Quindi si possono per l'appunto definire vari catch con le rispettive eccezioni. La struttura si chiude con End Try, c'è una sezione Finally che viene eseguita ogni caso, è una parte opzionale, che viene eseguita a tutti i costi.
Per quanti riguarda C# la sintassi è la seguente:
Quindi ricapitolando l'exception → condizione di errore per il quale il programma non può più andare avanti. Quindi è costretto ad interrompersi. Invece la Call Stack → è la pila delle chiamate a partire dalla funzione corrente e via via a risalire alle funzione che l'hanno chiamata. Esempio se partiamo da una certa funzione principale:
Se abbiamo un Exception come rappresentato in figura, se c'è una struttura Try Catch ci presenta questa struttura e gestisce questa eccezione. Se non c'è il Try Catch l'eccezione risale la Call Stack e sale su e vede se c'e' un Try Catch,altrimenti risale utta la Call Stack.
Differenze
In VB viene semplicemente generato il primo form come punto di entrata cioè il newform1, dove c'è proprio un gestore di eccezione non gestite chiamato MyApplication. Cioè viene istanziata la classe MyApplication che si incarica dell'avviamento del primo form e fornisce una serie di servizi, come gestore degli eventi come :
1) le eccezioni non gestite
2) disconnessione internet ecc.
Questo comportamento è controllato nei setting di progetto. Si può disabilitare e potremmo fare quello che fa C# cioè partire da una funzione principale Main e poi procedere. In C# dunque hanno obbligatoriamente un punto di entrata cioè una funzione void chiamata Main(), cioè arriva fino alla main per gestire una eccezione che non è stata gestita. Cioè risale fino alla prima funzione se non ci sono Try Catch.
Nessun commento:
Posta un commento