|
Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.
Het is mogelijk om zelf excepties ( of dus exceptietypes ) te definiëren. Dit kan door over te erven van op zijn minst System.Exception. Want om excepties van een eigen exceptietype te kunnen opwerpen, moet je na het Throw keyword een expressie plaatsen van type System.Exception of dus een type dat hiervan overerft.
We hebben reeds gezien hoe de besproken voorgedefinieerde exceptietypes allen afleiden van System.SystemException wat op zijn beurt een afgeleide is van System.Exception. Indien we zelf een exceptietype definiëren wordt aangeraden om deze af te leiden van System.ApplicationException wat ook weer een afgeleide is van System.Exception. System.Exception -> System.SystemException -> intrensic "system" exceptions -> System.ApplicationException -> user-defined exceptions Het afleiden van System.ApplicationException is geen technische vereiste, maar maakt het welk mogelijk om bijvoorbeeld aparte afhandeling te voorzien voor enerzijds voorgedefinieerde (1) en anderzijds zelf gedefinieerde (2) optredende excepties. Visual Basic 2010 Broncode Namespace UserDefinedExceptionsExample Class Article Protected _TaxPercentage As Integer Public Property TaxPercentage() As Integer Get TaxPercentage = _TaxPercentage End Get Set( ByVal value As Integer) If value < 0 Then Throw New ArticleException( _ "TaxPercentage can not be negative.") Else _TaxPercentage = value End If End Set End Property End Class Class ArticleException : Inherits System. ApplicationException Public Sub New( ByVal message As String) MyBase.New(message) End Sub End Class Class Client Public Shared Sub Main() Dim article1 As New Article Try article1.TaxPercentage = -1 Catch ex As System. SystemException Console.Write( "SystemException occured...") Catch ex As System. ApplicationException Console.WriteLine( "ApplicationException occured...") Console.Write( "Message : " & ex.Message) End Try Console.ReadLine() End Sub End ClassEnd NamespaceDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
Console Application Output ApplicationException occured...
Message : TaxPercentage can not be negative. Bemerk beperkt de definitie is van ArticleException. Het enigste waarin het nog voorziet is een constructor die je toelaat de message van de optredende exceptie te bepalen. Deze message wordt dan gewoon doorgespeeld aan de constructor van de basisklasse ApplicationException.
Doorgaans is het geen goed idee een specialisatie ( afgeleide klasse ) te maken indien er aan die specialisatie niet zinnigs wordt toegevoegd of aanpast aan wat wordt overgeërfd. Gespecialiseerde exceptietypes vormen daar dus een uitzondering op, het enigste wat we doen door die afgeleide klasse te definiëren is een extra exceptietype creëren.
Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.
|