Un'eccezione è un problema che si verifica durante l'esecuzione di un programma. Un'eccezione è una risposta a una circostanza eccezionale che nasce mentre un programma è in esecuzione, come ad esempio un tentativo di divisione per zero.
Le eccezioni forniscono un modo per trasferire il controllo da una parte di un programma ad un altro. VB.Net la gestione delle eccezioni è costruita su quattro parole chiave:
Try
[ tryStatements ]
[ Exit Try ]
[ Catch [ exception [ As type ] ] [ When expression ]
[ catchStatements ]
[ Exit Try ] ]
[ Catch (altri blocchi catch) ]
[ Finally
[ finallyStatements ] ]
End Try
Visual Basic .Net fornisce una serie di classi che rappresentano delle eccezioni di varia natura.
Tutte queste classi derivano direttamente o indirettamente da System.Exception.
Nella tabella in basso vediamo le tipologie di eccezioni più comuni
Eccezione | Descrizione |
---|---|
System.IO.IOException | Gestisce gli errori di I / O. |
System.IndexOutOfRangeException | Gestisce gli errori generati quando un metodo fa riferimento a un indice di array non esistente. |
System.NullReferenceException | Gestisce gli errori generati da riferimenti ad un oggetto nullo. |
System.DivideByZeroException | Gestisce gli errori generati divisioni per zero. |
System.InvalidCastException | Gestisce gli errori di conversione di tipo |
System.OutOfMemoryException | Gestisce gli errori generati dall'esaurimento della memoria disponibile. |
Module testEccezioni
Function Dividi(ByVal num As Decimal, ByVal den As Decimal) As Decimal
Return num \ den
End Function
Sub Main()
Try
Console.WriteLine(Dividi(100.00, 0))
Catch e As DivideByZeroException
Console.WriteLine("Divisione per zero")
End Try
End Sub
End Module
In VB.Net è possibile creare delle eccezioni personalizzare.
Sono delle classi che derivano dalla System.Exception
Public Class TempIsZeroException : Inherits Exception
Public Sub New(ByVal message As String)
MyBase.New(message)
End Sub
End Class
Tramite l'istruzione Throw è possibile forzare VB.Net a sollevare un'eccezione.
Module testEccezioni
Sub Main()
Try
Console.WriteLine("Inserisci un numero")
Dim s As String = Console.ReadLine()
If x = "0" Then
Throw New ApplicationException("Non puoi inserire il valore 0")
End If
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
End Module