Visual Basic 2012 Voorbeelden
   

visual basic 2012 broncode voorbeelden

Blijf op de hoogte van de recente aanpassingen op vbvoorbeelden!

Microsoft Visual Studio 2012Microsoft Developers Network - Visual BasicMicrosoft .NET Framework

15.12. User-Defined Exceptions

Print Email Deel op Twitter Deel op Facebook

Dit artikel is gepubliceerd op maandag 15 oktober 2012 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 2012 Broncode - Codevoorbeeld 413
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                             ' (1)
                Console.Write("SystemException occured...")
            Catch ex As System.ApplicationException                        ' (2)
                Console.WriteLine("ApplicationException occured...")
                Console.Write("Message : " & ex.Message)
            End Try
            '
            Console.ReadLine()
        End Sub
    End Class
End Namespace
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 maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.