Visual Basic.NETPag.1 Hoofdstuk 8 – Fout afhandeling Inleiding Structured Exception Handling Hoe fouten opvangen Geen foutafhandeling Alle fouten opvangen.

Slides:



Advertisements
Verwante presentaties
KWALITEITSZORG november 2012
Advertisements

Stilstaan bij parkeren Dat houdt ons in beweging
De elektronische verzamelaanvraag Ruben Fontaine Markt- en Inkomensbeheer – dienst Aangiftes.
‘SMS’ Studeren met Succes deel 1
KINN 2010 •OOP •O Object •O Georiënteerd •P Programmeren.
NEDERLANDS WOORD BEELD IN & IN Klik met de muis
WAAROM? Onderzoek naar het meest geschikte traject voor de verlenging tot in Sint-Niklaas van het bestaande fietspad naast de Stekense Vaart en de Molenbeek.
1 Resultaten marktonderzoek RPM Zeist, 16 januari 2002 Door: Olga van Veenendaal, medew. Rothkrans Projectmanagement.
November 2013 Opinieonderzoek Vlaanderen – oktober 2013 Opiniepeiling Vlaanderen uitgevoerd op het iVOXpanel.
Uitgaven aan zorg per financieringsbron / /Hoofdstuk 2 Zorg in perspectief /pagina 1.
1 COVER: Selecteer het grijze vlak hiernaast met rechtsklik & kies ‘change picture’ voor een ander beeld of verwijder deze slide & kies in de menubalk.
Global e-Society Complex België - Regio Vlaanderen e-Regio Provincie Limburg Stad Hasselt Percelen.
STAPPENPLAN GRAMMATICUS.
Ronde (Sport & Spel) Quiz Night !
Een Concert van het Nederlands Philharmonisch Orkest LES 4 1.
Gegevensstructuren: list boxen en lijsten
prNBN D addendum 1 Deel 2: PLT
Een optimale benutting van vierkante meters Breda, 6 juni 2007.
Kb.1 Ik leer op een goede manier optellen en aftrekken
Tevredenheids- enquête 2012 P. Grouwels Inleiding Mogelijke antwoorden: Zeer goed: 4 sterren ****: volledig tevreden; Goed: 3 sterren ***:
Objecten Hoofdstuk 6 Hoofdstuk 6 Hoofdstuk 6 1.
© BeSite B.V www.besite.nl Feit: In 2007 is 58% van de organisaties goed vindbaar op internet, terwijl in 2006 slechts 32% goed vindbaar.
Nooit meer onnodig groen? Luuk Misdom, IT&T
Hoofdstuk 6: Controle structuren
Inleiding Informatica Prof. Dr. O. De Troyer Hoofdstuk 10: Omgaan met problemen.
FOD VOLKSGEZONDHEID, VEILIGHEID VAN DE VOEDSELKETEN EN LEEFMILIEU 1 Kwaliteit en Patiëntveiligheid in de Belgische ziekenhuizen anno 2008 Rapportage over.
Elke 7 seconden een nieuw getal
Hoofdstuk 2 Hallo, C# !.
Softwarepakket voor het catalogeren en determineren van fruitsoorten
1 introductie 3'46” …………… normaal hart hond 1'41” ……..
Oefeningen F-toetsen ANOVA.
Verdieping Programmeren in Java - deel 1 college 6 mei 2001.
Wat levert de tweede pensioenpijler op voor het personeelslid? 1 Enkele simulaties op basis van de weddeschaal B1-B3.
Exceptions Hoofdstuk 17 Hoofdstuk 17.
Klassen schrijven Hoofdstuk 10. Visual Basic.NET voor studenten2 In dit hoofdstuk … Hoe schrijf je een klasse Constructormethodes Public methoden Variabelen.
Herhaling: For, While en Do
Consoleprogramma’s Hoofdstuk 19. Visual Basic.NET voor studenten2 In dit hoofdstuk … Hoe consoletoepassingen maken In- en uitvoer bij consoleprogramma’s.
Bestanden Hoofdstuk 18 Hoofdstuk 18.
13 maart 2014 Bodegraven 1. 1Korinthe Want gelijk het lichaam één is en vele leden heeft, en al de leden van het lichaam, hoe vele ook, een lichaam.
Geometrie en topologie Rob Kromwijk, 26 juli 2012.
Seminarie 1: Pythagoreïsche drietallen
Afrika: Topo nakijken en leren.
Visual Basic.
User management voor ondernemingen en organisaties
2009 Tevredenheidsenquête Resultaten Opleidingsinstellingen.
Ben Bruidegom 1 Sequentiële schakelingen Toestand uitgang bepaald door:  ingangen;  vorige toestand uitgang.
ribwis1 Toegepaste wiskunde – Differentieren Lesweek 7
Workshop Informatievaardigheden
Hoofdstuk 3: Inleiding tot Java Applets
Hartelijk welkom bij de Nederlandse Bridge Academie Hoofdstuk 9 Het eerste bijbod 1Contract 1, hoofdstuk 9.
KINN 2010 OOP O Object O Georiënteerd P Programmeren.
17/08/2014 | pag. 1 Fractale en Wavelet Beeldcompressie Les 5.
Visual Basic.NET voor studenten De VB- ontwikkelomgeving Hoofdstuk 2.
De financiële functie: Integrale bedrijfsanalyse©
Waar gaat het nou toch om?!
Programmeerstijl Hoofdstuk 21. Visual Basic.NET voor studenten2 Inleiding Belang van een goede programmeerstijl:  Programma’s worden door meerdere mensen.
1 Zie ook identiteit.pdf willen denkenvoelen 5 Zie ook identiteit.pdf.
1 Week /03/ is gestart in mineur De voorspellingen van alle groten der aarden dat de beurzen zouden stijgen is omgekeerd uitgedraaid.
DIGITAL ANALYTICS TOOLS. 2 DIGITALE MEDIA - METEN.
Arrays Hoofdstuk 14 Hoofdstuk 14.
Interfaces Hoofdstuk 23 Hoofdstuk 23.
Variabelen en berekeningen
Hoofdstuk 6 – Objectgeoriënteerd Programmeren: Overerving
Hoofdstuk 3 - Conditionele logica
23 mei 2013 Bodegraven vanaf hoofdstuk 6: hoofdst.1: de wijsheid van de wereld hoofdst.2: de wijsheid van God hoofdst.3: Gods akker en Gods bouwwerk.
1 XSLT processing & control Datamodellering 2006.
Polymorfie Hoofdstuk 24. Visual Basic.NET voor studenten2 Inleiding Polymorfie zorgt ervoor dat een gegeven object verschillende “vormen” kan aannemen.
Gameprogrammeren: Exceptions
Software Development fundamentals
Transcript van de presentatie:

Visual Basic.NETPag.1 Hoofdstuk 8 – Fout afhandeling Inleiding Structured Exception Handling Hoe fouten opvangen Geen foutafhandeling Alle fouten opvangen Specifieke fouten opvangen Throw exceptions Finally block Programmer-Defined Exception Classes

Hoofdstuk 8 : Fout afhandelingVisual Basic.NETPag Inleiding Exception  Indicatie van een onverwacht probleem at run-time  Zonder foutafafhandeling wordt programma afgesloten met een run-time error. Waarom aan foutafhandeling bij run-time errors doen?  Als je niet wilt dat het programma met een foutmelding wordt afgesloten een aantal alternatieve acties uitvoeren Je kan eventueel toch verder gaan met de uitvoering van het programma  of als een andere dan de standaardfoutmelding moet verschijnen

Hoofdstuk 8 : Fout afhandelingVisual Basic.NETPag Exception Handling Overview VB.NET gebruikt structured exception handling Syntax foutafhandeling (error handling) bij exceptions :... Try ‘bevat de code die moet worden uitgeprobeerd, en die een fout kan veroorzaken Catch ‘reageren op de uitzonderingen die kunnen voorkomen in Try-blok Geparametriseerd : vangt specifiek exceptions op Niet geparametriseerd : vangt alle exceptions op Finally ‘optioneel blok indien catch blokken bestaan ‘bevat code die altijd moet worden uigevoerd, ongeacht welke uitzondering plaatsvindt End Try...

Hoofdstuk 8 : Fout afhandelingVisual Basic.NETPag Exception Handling Overview I.g.v. exception (throw point)  Wordt opgevangen door een exception handler (in aanroepketen) Fout wordt afgehandeld  In het andere geval (geen bijhorende exception handler) Debug mode –Ignore : ga verder met continue execution –Break : View in debugger Standard execution mode –Continue : ga verder met uitvoering –Quit : Beëindig programma

Hoofdstuk 8 : Fout afhandelingVisual Basic.NETPag Exception Handling Overview Generatie van fout  Voorbeeld : openen bestand en lengte bepalen Dim lngSize as Long Dim s as FileStream s=File.open(txtFileName.text, FileMode.Open) lngSize = s.Length s.Close() Wat kan er allemaal misgaan? –File bestaat niet –Pad bestaat niet –Drive is niet beschikbaar(netwerkdrive bvb) –Je hebt geen rechten om file te openen –...

Hoofdstuk 8 : Fout afhandelingVisual Basic.NETPag Afhandelen van fouten Geen foutafhandeling  Runtime vangt fout op en geeft melding aan de gebruiker

Hoofdstuk 8 : Fout afhandelingVisual Basic.NETPag Afhandelen van fouten Afhandelen van alle fouten (1 exceptionhandler)  Geven van melding als een fout zich heeft voorgedaan Try s=File.open(txtFileName.text, FileMode.Open) lngSize = s.Length s.Close() Catch Messagebox.Show(“Fout by openen bestand”) End Try

Hoofdstuk 8 : Fout afhandelingVisual Basic.NETPag Afhandelen van fouten  Wat als je wat meer uitleg wenst te geven over de fout De Exception klasse in de System namespace bevat info over de runtime error Declareer een variabele van het type Exception Try ‘ code die een uitzondering kan triggeren Catch ex As Exception ‘Behandel uitzondering, gebruik makend van e End Try Of Dim ex As Exception Try ‘ code die een uitzondering kan triggeren Catch ex ‘Behandel uitzondering, gebruik makend van e End Try

Hoofdstuk 8 : Fout afhandelingVisual Basic.NETPag Afhandelen van fouten Meer info over fout opvragen adhv System.Exception properties –Message : foutmelding gekoppeld aan uitzondering »Default boodschap : geassocieerd met exception type »Gecustomiseerde boodschap : doorgegeven aan constructor van object –Source : naam van applicatie of object die fout veroorzaakt heeft –TargetSite : naam methode die fout gegenereerd heeft –StackTrace : exception historiek.1 string die een sekwentiële lijst van methodes bevat, die op moment dat de exception zich voordoet, nog niet volledig zijn uitgevoerd –InnerException : voor geneste exceptions –HelpLink : link naar Help file geassocieerd met fout –ToString : retourneert een string met de naam van de exception, de exception message, de naam van de inner exception en de stack.

Hoofdstuk 8 : Fout afhandelingVisual Basic.NETPag Afhandelen van fouten  Voorbeeld Try s=File.open(txtFileName.text, FileMode.Open) lngSize = s.Length s.Close() Catch e As exception Messagebox.Show(“Fout bij openen bestand : “ & e.message) Messagebox.Show(“Fout bij openen bestand : “ & e.tostring()) End Try

Hoofdstuk 8 : Fout afhandelingVisual Basic.NETPag Afhandelen van fouten Afhandelen van specifieke fouten(meerdere exceptionhandlers) .NET bevat tal van voorgedefinieerde exception klassen die afgeleid zijn van de basis klasse Exception in de System Namespace  In foutafhandeling kan je meerdere catch blokken voorzien, die elk een specifieke fout afhandelen  Volgorde van catch blokken is belangrijk! Runtime gaat op zoek naar eerste catch blok met een type fout waarvoor de “is een “ regel geldt.

Hoofdstuk 8 : Fout afhandelingVisual Basic.NETPag Afhandelen van fouten  Welke exceptions afhandelen? Zoek op in help : Elke methode die exceptions throwt heeft een sectie exceptions die de mogelijke exceptions beschrijft Voorbeeld : Exceptionklassen igv openen file –SecurityException : gebruiker heeft niet de vereiste permissies –ArgumentException : path is leeg, bevat enkel blanco’s of bevat illegale characters –FileNotFoundException : bestand bestaat niet –ArgumentNullException : path of mode is een NULL verwijzing –UnauthorizedAccessException : file is read-only of file is een pad –DirectoryNotFoundException : directory niet gevonden

Hoofdstuk 8 : Fout afhandelingVisual Basic.NETPag Afhandelen van fouten Code Private Sub btnSpecifiekeFouten_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSpecifiekeFouten.Click Dim lngSize As Long; Dim s As FileStream Try s = File.Open(txtFileName.Text, FileMode.Open) lngSize = s.Length s.Close() Catch ArgumentExceptionParameter As ArgumentException MessageBox.Show("You specified an invalid filename. “) Catch FileNotFoundExceptionParameter As FileNotFoundException MessageBox.Show("The file you specified can't be found. Please try again.") Catch ArgumentNullExceptionParameter As ArgumentNullException MessageBox.Show("You passed in a Null argument.") Catch UnauthorizedAccessExceptionParameter As UnauthorizedAccessException MessageBox.Show( "You specified a folder name, not a file name.") Catch DirectoryNotFoundExceptionParameter As DirectoryNotFoundException MessageBox.Show("You specified a folder that doesn't exist or can't be found.") Catch SecurityExceptionParameter As SecurityException MessageBox.Show("You don't have sufficient rights to open the selected file.") Catch IOExceptionParameter As IOException MessageBox.Show("The drive you selected is not ready.”) Catch ExceptionParameter As Exception MessageBox.Show("An unknown error occurred.") End Try End Sub

Hoofdstuk 8 : Fout afhandelingVisual Basic.NETPag Afhandelen van fouten.NET Exception hierarchy  System.Exception Basis class van.NET Framework exception hierarchy  Daaronder SystemException –Basisklasse voor alle exceptions gegenereerd door runtime ApplicationException –Creatie van exception data types eigen aan applicatie –Kunnen geworpen worden door applicatie  In de help kan je de verdere exception hierarchy bekijken

Hoofdstuk 8 : Fout afhandelingVisual Basic.NETPag Afhandelen van fouten Raisen van fout  Fout laten afhandelen door aanroepende methode(s)  Eigen fout definiëren  Dmv. Throw : laten optreden van een uitzondering in procedure die dan wordt opgevangen door dichtsbijzijnde uitzonderinghandler in aanroepketen Throw de fout die zich zojuist heeft voorgedaan Catch e As Exception Throw() Throw een fout ergens in de code binnen een Try blok Throw New FileNotFoundException() Een fout throwen een specifieke boodschap meegeven Throw New FileNotFoundException(“Kan bestand & txtFileName.Text & _ “ niet openen”) Throw New Exception(“File not found”)

Hoofdstuk 8 : Fout afhandelingVisual Basic.NETPag Afhandelen van fouten Hoe gaat runtime op zoek naar handlers indien je werkt met geneste Try blokken ?  Bij fout wordt de uitvoering van code onmiddellijk afgebroken  De runtime gaat op zoek naar fouthandler in bijhorend catch blokken. Als bijhorende handler gevonden wordt, wordt fout afgehandeld en wordt verdergegaan met uitvoering van programma  Als er geen geschikte handler is voor fout in de bijhorende catch blokken, dan wordt de verwerking van de omvattende methodes (try blokken) afgebroken tot een corresponderende handler gevonden  Als er geen omvattende try blokken zijn met een passende handler, dan handelt de runtime zelf de fout af met een runtime error

Hoofdstuk 8 : Fout afhandelingVisual Basic.NETPag ' Properties.vb 2 ' Stack unwinding and Exception class properties. 3 4 ' demonstrates using properties Message, StackTrace and 5 ' InnerException 6 Class CProperties 7 8 Shared Sub Main() 9 10 ' call Method1; any Exception generatesd will be caught 11 ' in the Catch block that follows 12 Try 13 Method1() ' Output String representation of Exception, then output 16 ' values of properties InnerException, Message and StackTrace 17 Catch exception As Exception 18 Console.WriteLine("exception.ToString: " & _ 19 vbCrLf & "{0}" & vbCrLf, exception.ToString()) Console.WriteLine("exception.Message: " & _ 22 vbCrLf & "{0}" & vbCrLf, exception.Message) Console.WriteLine("exception.StackTrace: " & _ 25 vbCrLf & "{0}" & vbCrLf, exception.StackTrace) Console.WriteLine("exception.InnerException: " & _ 28 vbCrLf & "{0}" & vbCrLf, exception.InnerException) End Try End Sub ' Main 33 Aanroepen van Main, wordt eerste methode op method call stack Exception wordt opgevangen door catch handler Main roept Method 1 aan, die de 2de methode wordt op method-call stack

Hoofdstuk 8 : Fout afhandelingVisual Basic.NETPag ' calls Method2 35 Public Shared Sub Method1() 36 Method2() 37 End Sub ' calls Method3 40 Public Shared Sub Method2() 41 Method3() 42 End Sub ' throws an Exception containing InnerException 45 Public Shared Sub Method3() ' attempt to convert String to Integer 48 Try 49 Convert.ToInt32("Not an integer") ' wrap FormatException in new Exception 52 Catch formatException As FormatException Throw New Exception("Exception occurred in Method3", _ 55 formatException) End Try End Sub ' Method End Class ' CProperties exception.ToString: System.Exception: Exception occurred in Method3 ---> System.FormatException: Input String was not in a correct format. at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) Method 1 roept Method 2 op, die de derde methode op de stack wordt Method 2 roept Method 3 op, die de vierde methode op de stack wordt De gespecifieerde exception type komt overeen met het geworpen type, dus de fout wordt afgehandeld De FormatException wordt doorgegeven aan constructor als een InnerException Method 3 stopt en unwinding begint Daar argument geen Integer is, wordt een exception geworpen en Convert.ToInt32 wordt van de stack verwijderd Method 3 roept method Convert.ToInt32 op

Hoofdstuk 8 : Fout afhandelingVisual Basic.NETPag. 19 at System.Int32.Parse(String s, NumberStyles style, IFormatProvider provider) at System.Int32.Parse(String s) at System.Convert.ToInt32(String value) at Properties.CProperties.Method3() in C:\books\2001\vbhtp2\ch11\Fig11_03\Properties\Properties.vb:line End of inner exception stack trace --- at Properties.CProperties.Method3() in C:\books\2001\vbhtp2\ch11\Fig11_03\Properties\Properties.vb:line 54 at Properties.CProperties.Method2() in C:\books\2001\vbhtp2\ch11\Fig11_03\Properties\Properties.vb:line 41 at Properties.CProperties.Method1() in C:\books\2001\vbhtp2\ch11\Fig11_03\Properties\Properties.vb:line 36 at Properties.CProperties.Main() in C:\books\2001\vbhtp2\ch11\Fig11_03\Properties\Properties.vb:line 13 exception.Message: Exception occurred in Method3 exception.StackTrace: at Properties.CProperties.Method3() in C:\books\2001\vbhtp2\ch11\Fig11_03\Properties\Properties.vb:line 54 at Properties.CProperties.Method2() in C:\books\2001\vbhtp2\ch11\Fig11_03\Properties\Properties.vb:line 41 at Properties.CProperties.Method1() in C:\books\2001\vbhtp2\ch11\Fig11_03\Properties\Properties.vb:line 36 at Properties.CProperties.Main() in C:\books\2001\vbhtp2\ch11\Fig11_03\Properties\Properties.vb:line 13 exception.InnerException: System.FormatException: Input String was not in a correct format. at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) at System.Int32.Parse(String s, NumberStyles style, IFormatProvider provider) at System.Int32.Parse(String s) at System.Convert.ToInt32(String value) at Properties.CProperties.Method3() in C:\books\2001\vbhtp2\ch11\Fig11_03\Properties\Properties.vb:line 49

Hoofdstuk 8 : Fout afhandelingVisual Basic.NETPag Finally block Bevat code die altijd wordt uitgevoerd  Ongeacht het feit of er zich nu een uitzondering voordoet of niet  Wordt uitgevoerd na de exception handling code en voordat de controle wordt teruggegeven aan aanroepende methode Optionieel  Niet vereist indien 1 of meerdere catch handlers bestaan Gebruik?  Vrijgeven van resources gebruikt in Try Block Eliminatie van resource leaks

Hoofdstuk 8 : Fout afhandelingVisual Basic.NETPag Programmer defined Exception Classes Erven van de klasse ApplicationException in namespace System Moeten voldoen aan volgende standaard  Klasse naam moet eindigen op “Exception”  Klasse moet 3 exceptions bevatten Default constructor Constructor met 1 input parameter van het type String argument –De foutmelding Constructor met een String argument en een Exception argument –De foutmelding –Het InnerException object

Hoofdstuk 8 : Fout afhandelingVisual Basic.NETPag Programmer defined Exception Classes  Voorbeeld van user defined klasse Public Class FileTooLargeException Inherits ApplicationException Private mlngFileSize As Long Public Sub New(ByVal Message As String) MyBase.New(Message) End Sub Public Sub New(ByVal Message As String, ByVal Inner As Exception) MyBase.New(Message, Inner) End Sub Public Sub New(ByVal Message As String, ByVal Inner As Exception, ByVal FileSize As Long) MyBase.New(Message, Inner) mlngFileSize = FileSize End Sub Public ReadOnly Property FileSize() As Long Get Return mlngFileSize End Get End Property End Class

Hoofdstuk 8 : Fout afhandelingVisual Basic.NETPag Programmer defined Exception Classes  Voorbeeld throwen van user defined exception Public Class FileTooLargeException Inherits ApplicationException Private mlngFileSize As Long Public Sub New(ByVal Message As String) MyBase.New(Message) End Sub Public Sub New(ByVal Message As String, ByVal Inner As Exception) MyBase.New(Message, Inner) End Sub Public Sub New(ByVal Message As String, ByVal Inner As Exception, ByVal FileSize As Long) MyBase.New(Message, Inner) mlngFileSize = FileSize End Sub Public ReadOnly Property FileSize() As Long Get Return mlngFileSize End Get End Property End Class

Hoofdstuk 8 : Fout afhandelingVisual Basic.NETPag Programmer defined Exception Classes  Afhandelen user defined exception Private Sub btnUserDefined_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUserDefined.Click Dim lngSize As Long ' Test a user-defined exception. Try lngSize = GetSize(txtFileName.Text) Catch FileTooLargeExceptionParameter As FileTooLargeException MessageBox.Show( _ String.Format( _ "Please select a smaller file! " & _ "The file you selected was {0} bytes.", _ FileTooLargeExceptionParameter.FileSize)) Catch exceptionParameter As Exception MessageBox.Show(exceptionParameter.Message) End Try End Sub