ProgrammatieVB.NET ontwikkelaar

Hoe implementeer je gebruikersfouten (Custom Exceptions) in Visual Basic en in welke gevallen is dit echt nodig?

Slaag voor sollicitatiegesprekken met de Hintsage AI-assistent

Antwoord.

In Visual Basic .NET kun je je eigen type uitzonderingen maken om specifieker aan te geven welke fouten zijn opgetreden in de applicatie. Hiervoor moet je een nieuwe klasse afleiden van System.Exception (of een van zijn afgeleiden) en, indien nodig, nieuwe eigenschappen toevoegen om extra informatie door te geven.

Custom Exceptions maken de code leesbaarder en onderhoudbaarder, vooral als je specifieke verwerking nodig hebt voor bepaalde bedrijfsscenario's.

Voorbeeld:

Public Class InvalidUserNameException Inherits ApplicationException Public Sub New(message As String) MyBase.New(message) End Sub End Class ' Gebruik: Sub ValidateUserName(userName As String) If userName = "" Then Throw New InvalidUserNameException("De gebruikersnaam mag niet leeg zijn") End If End Sub

Vragende vraag.

Vraag: "Kan ik gewoon een string gooien met Throw "Fout" in Visual Basic, en wordt dit door Try...Catch afgehandeld?"

Antwoord: Nee, dat kan niet. De Throw-operator vereist een object van het type Exception. Proberen een string te gooien (Throw "err") zal leiden tot een compilatiefout. Je moet altijd een nieuw exemplaar van de klasse Exception of een afgeleide daarvan maken.

Voorbeeld van onjuiste code:

' Dit zal een fout veroorzaken! Throw "Fout!"

Voorbeeld van juiste code:

Throw New Exception("Fout!")

Voorbeelden van echte fouten door onwetendheid over de nuances van het onderwerp.


Verhaal:

In een groot project gooide een van de ontwikkelaars uitzonderingen met Throw "Ongeldige gegevens!". Dit leidde tot compilatiefouten in productie, omdat de code de statische controle niet doorging. Het ontbreken van een juiste verwerking van uitzonderingen vertraagde de release met een week — er moest gezocht en herschreven worden naar alle gevallen van throw met strings door de code.


Verhaal:

Het team maakte aangepaste uitzonderingen zonder een constructor met de parameter InnerException toe te voegen. Bij het diagnosticeren van complexe fouten ging de oproepstack verloren omdat de originele uitzondering niet kon worden "ingewikkeld". Dit maakte het moeilijk om de oorspronkelijke oorzaak van de fout te vinden.


Verhaal:

In een media-applicatie werd de custom exception te vaak en niet voor het doel gebruikt (bijvoorbeeld bij elke ongeldige invoer). Dit leidde tot een daling van de systeemprestaties — omdat het genereren van uitzonderingen operationeel kostbaar is. Na een review werden veel van dergelijke uitzonderingen vervangen door gewone voorwaarde-controles.