|
Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.
In een Try ... End Try statementblok mogen ook meerdere Catch gedeeltes gedefinieerd worden. Het voordeel hiervan is dat men bij het optreden van verschillende exceptietypes ook een verschillende afhandeling kan voorzien. Visual Basic 2010 Broncode Class MultipleCatchPartsExample Public Shared Sub Main() Try Dim dividend As Byte = 10 Console.Write( "Divisor ? : ") Dim divisor As Byte = System.Convert.ToByte( Console.ReadLine()) Dim result As Byte = dividend \ divisor Console.WriteLine(result) Catch ex As System. DivideByZeroException Console.WriteLine( "DivideByZeroException occured...") Catch ex As System. FormatException Console.WriteLine( "FormatException occured...") Catch ex As System. OverflowException Console.WriteLine( "OverflowException occured...") Catch ex As System. Exception Console.WriteLine( "Exception occured...") End Try Console.ReadLine() End SubEnd ClassDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
Voert de gebruiker hier "2" in dan treedt geen exceptie op en krijgen we gewoon het resultaat op de console te zien. Console Application Output Divisor ? : 2
5 Voert de gebruiker hier "0" in dan treedt er een DivideByZero exceptie op. Console Application Output Divisor ? : 0
DivideByZeroException occured... Voer de gebruiker "hello" in dan treedt er een FormatException op. Console Application Output Divisor ? : 2
FormatException occured... Voer de gebruiker bijvoorbeeld "1000" of "-1" in dan treedt er een OverflowException op. Dit zal hier altijd het geval zijn als het om een numerieke waarde gaat die niet past in het bereik van Byte. Console Application Output Divisor ? : 1000
OverflowException occured... Treedt er eender welke andere exceptie op dan zal die worden afgehandeld in het laatste Catch gedeelte, want deze specifieerd niet welke specifieke exceptie het zou afhandelen.
De volgorde waarin de Catch gedeeltes gedefinieerd staan is wel degelijk van belang. Plaats je dat laatste Catch gedeelte als eerste, dan zal dat gedeelte alle optredende excepties afhandelen. Ieder specifiek exceptietype ( DivideByZeroException, FormatException, OverflowException, ... ) is ten slotte een afgeleid type van Exception en kan dus ook opgevangen worden in een variabele van dat basistype.
Alle variabelen die hier in de Catch gedeeltes gedeclareerd zijn hebben hier als identifier ex, dit is niet noodzakelijk, je kan zelf vrij bepalen welke identifier je gebruikt.
Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.
|