Gestione delle eccezioni in VB.Net: esempi di gestione Try & Catch
Cos'è un'eccezione in VB.Net?
An Eccezione in VB.Net si riferisce a un problema che si verifica durante l'esecuzione del programma. È causato da una circostanza inaspettata. Un buon esempio è quando si esegue un'operazione di divisione e poi si divide per zero (0). Verrà sollevata un'eccezione.
Cos'è la gestione delle eccezioni in VB.Net?
Con eccezioni in VB.Net, puoi trasferire il controllo di un programma da una parte all'altra. In VB.Net, le eccezioni vengono gestite utilizzando le seguenti 4 parole chiave:
Parola chiave | Dettagli |
---|---|
STIMA SMART DI | Il compito del blocco Try è identificare il blocco di codice per il quale verrà attivata un'eccezione specifica. Dovrebbe essere seguito da uno o più blocchi catch. |
lotta | La cattura dell'eccezione viene eseguita in questo blocco. È un gestore di eccezioni in cui viene gestita l'eccezione. |
Infine | Utilizzare il blocco Finalmente per eseguire una serie di istruzioni indipendentemente dal fatto che si sia verificata un'eccezione o meno. |
Buttare | Viene generata un'eccezione dopo che si è verificato un problema. Questo è il lavoro della parola chiave Throw. |
Sintassi di Try Catch in VB.Net
Le istruzioni Try Catch in VB.Net sono definite utilizzando la sintassi seguente:
Try [ try_Statement(s) ] [ Exit Try ] [ Catch [ exception_name [ As type ] ] [ When expression ] [ catch_Statement(s) ] [ Exit Try ] ] [ Catch ... ] [ Finally [ finally_Statement(s) ] ] End Try
Il blocco Try/Catch dovrebbe racchiudere il codice che potrebbe sollevare un'eccezione. Questo codice è noto come codice protetto. È possibile utilizzare più istruzioni catch quando è necessario acquisire vari tipi di eccezioni.
Esempio di gestione delle eccezioni in VB.Net con Try Catch e Finalmente
Con le istruzioni Try/Catch è possibile separare il normale codice del programma dal sistema di gestione degli errori. Dimostriamo come gestire un'eccezione utilizzando le parole chiave Try, Catch e Finalmente.
Passo 1) Creare una nuova applicazione console.
Passo 2) Usa questo codice:
Module Module1 Sub divisionFunction(ByVal n1 As Integer, ByVal n2 As Integer) Dim answer As Integer Try answer = n1 \ n2 Catch ex As DivideByZeroException Console.WriteLine("Exception: {0}", ex) Finally Console.WriteLine("Answer is: {0}", answer) End Try End Sub Sub Main() divisionFunction(4, 0) Console.ReadKey() End Sub End Module
Passo 3) Fai clic sul pulsante Start dalla barra degli strumenti per eseguire il codice. Dovresti ottenere il seguente output:
Ecco uno screenshot del codice:
Spiegazione del codice:
- Creazione di un modulo denominato Modulo1.
- Creazione di una sottoprocedura denominata divisionFunction con due argomenti interi n1 e n2. ByVal è una parola chiave VB.Net che indica che i valori degli argomenti verranno passati per valore.
- Creazione di una variabile intera denominata risposta.
- Inizio del blocco Try/Catch. Dobbiamo racchiudere il codice che sospettiamo possa sollevare un'eccezione con questo blocco.
- Esecuzione di un'operazione di divisione tra i valori delle variabili n1 e n2. Il risultato dell'operazione di divisione viene assegnato alla variabile risposta. Questo codice può sollevare un'eccezione, ad esempio, quando dividiamo un numero per zero, quindi lo abbiamo circondato con i blocchi Try/Catch.
- Catturare l'eccezione denominata DivideByZeroException e assegnare il messaggio di eccezione generato all'ex.
- Stampa di testo sulla console per notificare all'utente il tipo/nome dell'eccezione sollevata.
- Il blocco Finalmente. Questo verrà eseguito indipendentemente dal fatto che un'eccezione venga rilevata o meno.
- Stampa di un testo sulla console che mostra il risultato dell'operazione di divisione.
- Fine del blocco Try, ovvero fine del codice di gestione degli errori.
- Fine della sottoprocedura divisionFunction.
- Inizio della sottoprocedura principale.
- Chiamare/invocare la sottoprocedura divisionFunction. Qui vengono passati i valori dei due argomenti interi. Il valore di n1=4 e n2=0. Ciò significa che l'operazione di divisione sarà 4\0, ovvero n1\n2.
- Messa in pausa della finestra della console in attesa che l'utente intervenga per chiuderla.
- Fine della sottoprocedura principale.
- Fine del modulo.
Eccezioni definite dall'utente in VB.Net
VB.Net ti consente di definire le tue eccezioni. È possibile ottenere classi di eccezioni definite dall'utente dalla classe ApplicationException. Dimostriamolo con un esempio:
Esempio di eccezione definita dall'utente in VB.Net
Ecco un esempio di eccezione definita dall'utente in VB.Net:
Passo 1) Creare una nuova applicazione console.
Passo 2) Usa il seguente codice:
Module Module1 Public Class HeightIsZeroException : Inherits ApplicationException Public Sub New(ByVal text As String) MyBase.New(text) End Sub End Class Public Class Height Dim height As Integer = 0 Sub showHeight() If (height = 0) Then Throw (New HeightIsZeroException("Zero Height found")) Else Console.WriteLine("Height is: {0}", height) End If End Sub End Class Sub Main() Dim hght As Height = New Height() Try hght.showHeight() Catch ex As HeightIsZeroException Console.WriteLine("HeightIsZeroException: {0}", ex.Message) End Try Console.ReadKey() End Sub End Module
Passo 3) Fai clic sul pulsante Start dalla barra in alto per eseguire il codice. Dovresti ottenere il seguente output:
Ecco uno screenshot del codice:
Spiegazione del codice:
- Creazione di un modulo denominato Modulo1.
- Creazione di una classe di eccezione denominata HeightIsZeroException. La classe eredita tutta la classe ApplicationException.
- Creazione di una sottoprocedura denominata New. Ci vorrà un argomento stringa chiamato testo.
- Chiamando il costruttore della classe base e passandogli l'argomento precedente.
- Fine della sottoprocedura Nuova.
- Fine della classe HeightIsZeroException.
- Creazione di una classe denominata Height. Il suo modificatore di accesso pubblico è Pubblico, il che significa che sarà accessibile pubblicamente.
- Creazione di una variabile intera denominata Altezza e inizializzazione del suo valore su 0.
- Creazione di una sottoprocedura denominata showHeight().
- Verificando quando il valore della variabile Altezza è 0. Abbiamo utilizzato la condizione Se...Allora.
- Per generare HeightIsZeroException se la condizione precedente è vera. Il messaggio Altezza zero trovata verrà visualizzato quando viene lanciata questa eccezione.
- La parte Else da eseguire quando la condizione If non è vera.
- Messaggio da stampare sulla console che mostra l'altezza quando è diversa da 0.
- Fine della condizione If.
- Fine della procedura secondaria showHeight().
- Fine della lezione Altezza.
- Inizio della sottoprocedura principale.
- Creazione di un oggetto denominato Height come istanza della classe Height.
- Inizio del blocco di gestione delle eccezioni.
- Invocando la sottoprocedura showHeight() definita nella classe Height. Abbiamo utilizzato un oggetto di questa classe per accedere a questo metodo. Questa riga può comportare un'eccezione. Pertanto, lo abbiamo circondato con un codice di gestione delle eccezioni.
- Catturare l'eccezione HeightIsZeroException come oggetto ex nel caso in cui si verifichi.
- Il messaggio da stampare sulla console quando viene rilevata HeightIsZeroException.
- Fine del blocco di gestione delle eccezioni.
- Metti in pausa la finestra della console in attesa che un utente intervenga per chiuderla.
- Fine della sottoprocedura principale.
- Fine del modulo.
Genera eccezione in VB.Net
Nella gestione delle eccezioni, puoi scegliere di lanciare un oggetto. Tuttavia, l'oggetto deve essere derivato da System. Classe d'eccezione, direttamente o indirettamente. Per esempio:
Esempio di eccezione di lancio in VB.Net
Di seguito è riportato un esempio di eccezione di lancio in VB.Net:
Passo 1) Creare una nuova applicazione console.
Passo 2) Usa il seguente codice:
Module Module1 Sub Main() Try Throw New ApplicationException("Throwing a custom exception") Catch ex As Exception Console.WriteLine(ex.Message) Finally Console.WriteLine("The Finally Block") End Try Console.ReadKey() End Sub End Module
Passo 3) Fai clic sul pulsante Start dalla barra in alto per eseguire il codice. Dovresti ottenere quanto segue:
Ecco uno screenshot del codice:
Spiegazione del codice:
- Creazione di un modulo denominato Modulo1.
- Inizio della sottoprocedura principale.
- Inizio del codice di gestione degli errori.
- Generazione di un oggetto eccezione. Questo codice potrebbe generare un'eccezione, quindi lo abbiamo circondato con un blocco Try/Catch.
- Catturare un'eccezione come oggetto ex se la linea genera un'eccezione.
- Stampa del messaggio di eccezione sulla console nel caso in cui si verifichi.
- Il blocco Finalmente viene eseguito indipendentemente dal fatto che un'eccezione venga rilevata o meno.
- Il messaggio da stampare sulla console quando viene eseguito il blocco Finalmente.
- Fine del codice di gestione delle eccezioni.
- Metti in pausa la console per un po' in attesa che un utente intervenga per chiuderla.
- Fine della sottoprocedura principale.
- Fine del modulo.
Sintesi
- Un'eccezione si riferisce ad un problema che si verifica durante l'esecuzione del programma causato da una circostanza imprevista.
- Se sospetti che del codice generi un'eccezione, circondalo con un blocco Try/Catch.
- Il blocco Finalmente viene dopo il blocco Try/Catch ed viene eseguito indipendentemente dal fatto che un'eccezione venga catturata o meno.
- VB.Net ci consente di creare eccezioni personalizzate.