Mentre si scrivono i programmi può capitare che chi lo usi immetta dati che manderebbero in crash l'esecuzione, per evitare ciò si gestisce l'eccezione usando:

 

Try
    [...]
Catch ex As Exception
    [...]
End Try

la variabile ex è di tipo exception, e vale per qualsiasi eccezione, ma se dovessimo distinguere due tipi differenti di eccezioni? Ci sono molti altri tipi derivati da Exception come per esempio InvalidCastException che viene lanciato quando si inserisce un tipo di dato in una variabile che non può contenere quel dato. ma se non conosciamo nessuna classe derivata da Exception possiamo comunque distinguere i vari tipi di eccezioni. Per fare ciò sembrerà strano ma bisognerà generare volutamente l'eccezione durante il debug: per avvertire l'utente che ha inserito un numero troppo alto si inserirà un numero troppo alto, per avvertire l'utente che sono stati inseriti caratteri non validi si inseriranno caratteri non validi, il computer se non gestisce l'eccezione segnalerà la riga di codice nella quale questa si è verificata che verrà colorata di giallo e collegata con una linea ad una specie di finestra, in alto a sinistra di questa si trova il tipo dell'eccezione.

Alla fine si scrive il Try con tutte le eccezioni:

 

Dim a As Integer
Try
    a = Console.ReadLine
Catch ex1 As InvalidCastException
    Console.WriteLine("Inseriti caratteri non validi")
    Exit Sub
Catch ex2 As OverflowException
    Console.WriteLine("Inserito un numero troppo alto")
    Exit Sub
Catch ex3 As Exception
    Console.WriteLine("Errore non specificato")
    Exit Sub
End Try

Per i più esperti è normale fare una cosa del genere, molto probabilmente più lunga di questa senza seguire il procedimento, ma i principianti in questo modo possono imparare più tipi di eccezioni e usarli al meglio, e poi non ci sarà più bisogno di questo procedimento per ottenere il tipo di eccezione che serve.

La classe Exception come già accennato prima equivale a tutte le eccezioni e di solito si mette in fondo al Try prima di un eventuale Finally, per gestire poi tutti gli errori secondari in meno codice, ovviamente se non serve distinguere le eccezioni si usa un unico codice per tutte quelle che si verificano.