1 • Best practice for exception handling • Exception klasser • Division med nul uden exception handling • Division med nul med exception handling •. NET.

Slides:



Advertisements
Lignende præsentationer
SharePoint /36 2 General SettingsPermissions and ManagementCommunications Titel, description and navigation Versioning settings Advanced settings.
Advertisements

Klik på Aktivér redigering på meddelelseslinjen.
Torbenfeldvej Vallensbæk strand Tlf.: – – dagligt brug af vores hjemmeside •AGEN LYS har en stor og omfattende.
Velkommen til Softwarekonstruktion
REGISTRERINGSDATABASEN
Vejledning i blog-værktøjet WordPress Opdateret februar 2009.
07 – Kort om OO Introduktion.
Sikkerhed/Otto Knudsen 1 Diagnostics  Debug af web-applikationer.
T1 – OPGAVE 14.2 LINETT & SABRINA Klasse Varer namespace Opgave_14._2 { class Varer { private string vare; private string farve; private double.
1 Intro nedarvning (eng.: inheritance) Nedarvningshierarkier Intro polymorfisme (eng.: polymorphism) Abstract / virtual / override / sealed Intro interfaces.
Datastrukturer Simple-type structs
Dag 9: Programpakker Jquery og JQuery Mobile
Distribueret programmering, specielt.NET Remoting Rasmus D. Lehrmann DM
Array vs. ArrayList. Arrays Et array er en struktureret metode til at gemme flere værdier af den samme datatype. Data’en i et array ligger op ad hinanden.
Grundlæggende programmering Efterår 2001
1 Filer - intro Data-hierarki Filer og strømme (eng.: streams) af bytes Klasserne File og Directory Oprettelse af sekventiel tekstfil Læsning af data fra.
Objektorienteret programmering
Exceptions. 2 Nordjyllands Erhvervakademi – 2009 Objectives “Unfortunately, errors are a part of life. Some are detected by the compiler, some are detected.
Hvordan man skriver koden.
01 – Java platform for starters. 2 NOEA2009Java-kursus – Java Platform Introduktion til Java Baggrund Hvad er Java? Faciliteter i Java.
Opret en database i Reference Manager, ver. 11 Åbn programmet. Opret en ny database. Placér basen ude på ”skrivebordet ” (kun i denne sammenhæng – da baserne.
Structs Structs allokeres på stakken Memory-allokering sker ved oprettelse af variabel og ikke ved new Der kan defineres metoder incl. Constructor. Eksempel.
ASP.NET Cache, State DataGrid og Diagnostics. Agenda – ASP.NET Cache, State og Cookies ( 1 del ) –Cache –Static member –Application State –Session State.
Masterpages/Otto Knudsen 1 Master Pages Master Pages i ASP.NET 2.0.
Validering af data (Access, del 7)
Webserveren kan afvikle flere applikationer, der hver har deres eget selvstændige ”liv” og hukommelse. Den enkelte applikation består typisk af flere elementer.
Søgning & sortering Intro søgning Lineær søgning Binær søgning
GP5, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 5 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
FEN IntroJava AAU1 Java grundelementer Variable og datatyper Sætninger og udtryk Metoder.
NOEA/IT - FEN1 Typeparametisering/Genericity Generics i.NET 2 og C#
18 – Java Server Faces. 2 NOEA2009Java-kursus – JSF 2 Web-applikationer - 1 Brugere interagerer med en Web-browser Browseren sender forespørgsler til.
1 Bestanddele i en Windows form-løsning GUI kontroller (eng.: controls) & komponenter (eng.: components) Almindelige egenskaber, metoder & hændelser for.
MMP Model og Metode til Programudvikling – MMP 1 Kursusindhold: Modellering af postkontor Objekt Orienteret Programudvikling - OO* Unified Modelling.
Introduktion til © 2013 Microsoft Corporation. Alle rettigheder forbeholdes. Startskærmbilledet i Lync Startskærmbilledet i Lync har fliser i hubben til.
Intro til C# apps Kodegennemgang af simpel C# app
MSBuild & Team Build i C#/C++ solutions VSTS ERFA d. 25 November.
Lektion 7 Læsestof: Kopier fra Caranno
Fundamentale datastrukturer
Eksempel på realisering af domænemodel
FEN KbP/seminar 1: Specifikationer/Notationen Q 1 Kontraktbaseret programmering: Seminar 1 Om specifikationer Algoritmenotationen Q.
Webserveren kan afvikle flere applikationer, der hver har deres eget selvstændige ”liv” og hukommelse. Den enkelte applikation består typisk af flere elementer.
Objekter og klasser Rasmus D. Lehrmann DM
1 While Tæller-kontrolleret (eng.: counter-controlled) repetition For Steen Jensen, efterår 2013.
1 Team Build med Team Foundation Server 2008 Konfiguration og udvidelse af build jobs Kort præsentation Hvorfor bruge Team Build Afvikling af et build.
10. Datastrukturer. 2 Nordjyllands Erhvervakademi Collections library Datastrukturer i.NET kaldes normalt Collections Findes i namespace System.Collections.
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Repetition: Introduktion til OOP med C# og .NET
DIEB4.1 Kursusgang 4 Oversigt: Sidste kursusgang Opgaver Aktivitet 2: Generer design (fortsat) Design af interaktionselementer.
11 - Exceptions. 2 NOEA2009Java-kursus – Exceptions Hvad er en exception? En undtagelse. Typisk en fejl der opstår runtime Afbryder det normale programflow.
KF04 GRAY Item 2, 12, 22, 32, 42, 52. Consider a builder when faced with many constructor parameters Item 2.
Webserveren kan afvikle flere applikationer, der hver har deres eget selvstændige ”liv” og hukommelse. Den enkelte applikation består typisk af flere elementer.
C#: Udtryk og metoder Kilde: Joe Hummel. 2 Nordjyllands Erhvervakademi – 2008 Indhold “With regards to programming statements and methods, C# offers what.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner findEn findAlle Primitive typer (forfremmelse og begrænsning) Identitet versus lighed.
Databaseadgang fra C#:
GP9, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 11 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
Tekst filer Tekstfiler opbygges normalt af linier, hvor disse ikke behøver at være samme længde. Når man skal arbejde med tekstfiler, ønsker man metoder.
Økonometri 1: Heteroskedasticitet1 Økonometri 1 Heteroskedasticitet 31. marts 2003.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
 Jens Bennedsen, 2003Introducerende objektorienteret programmering Exceptions.
DAIMIIntroducerende objektorienteret programmering4B.1 Typer og tilstand i Java Typer, tilstand, erklæring, variable, primitive datatyper, reference- og.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
DAIMIIntroducerende objektorienteret programmeringkd.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
DAIMIIntroducerende objektorienteret programmering4B.1 Grundlæggende og Reference Typer i Java Typer, tilstand, erklæring, reference- og værdi semantik,
DAIMIProgrammering af Store Systemer1 Concurrency i Java – Samarbejdende tråde.
Jesper Mosegaard Multimedie Programmering E2003 MMProg uge46 Ancestor.
 Jens Bennedsen 2001Multimedie programmering3A.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
WebApi service x.
Studiepraktik Thomas Bøgholm Mikkel Hansen Jacob Elefsen
Modul 4: ”Tekstbehandling 2”
Præsentationens transcript:

1 • Best practice for exception handling • Exception klasser • Division med nul uden exception handling • Division med nul med exception handling •. NET exception hierarki • Finally blok • Using statement • Exception egenskaber (eng.: properties) & stack unwinding • Brugerdefinerede exception klasser Steen Jensen, efterår 2013

 Stilen og detaljerne i C#’s exception handling er delvist baseret på Andrew Koenig & Bjarne Strupstrups ”Best Practices for Handling Exceptions [C#]  Se 2

 Nedenstående figur viser hierarkiet af exception klasser i C# 3 Figur fra s. 440 i ”Computing with C#” af Art Gittleman

4  Eksemplet viser en app, der udfører en division – som tæller (eng.: numerator) og nævner (eng.: denominator) anvendes heltal/integers  Figur 13.1 viser forskellige situationer med og uden exceptions

5  Eksemplet fra figur 13.1 er nu udvidet med exception handling  Linje 11-44: løkke, der kører, sålænge der er fejl (continueLoop = true)  Linje 14-31: try blok, hvor de to heltal/integers indlæses, og resultat beregnes. Blokken afsluttes med at sætte continueLoop til false  Linje 32-37: catch blok, der håndterer FormatException  Linje 38-43: catch blok, der håndterer DivideByZeroException

6  Exception handling mekanismen i C# tillader kun objekter af klassen Exception (namespace System) at blive kastet og fanget (eng.: thow & catch)  Klassen Exception er basisklasse for.NET’s exception klasse-hierarki  En vigtig afledt klasse er SystemException:  fx indeksering af element uden for array  IndexOutOfRangeException  fx brug af reference-type variabel til at kalde en metode, og referencen er null  NullReferenceException  andre exceptions: OutOfMemoryException, StackOverflowException  For at finde ud af, hvornår en metode kan kaste (eng.: throw) en exception, kan man i Visual Studio gå ind under View + Object Browser. Under namespace System kan man se en liste over mulige exceptions

7  Programmer tildeler og frigiver (eng.: request & release) jævnligt ressourcer - fx fil åbnes …… fil lukkes til sidst  Hvis en ressource ikke frigives, opstår en såkaldt resource leak  I programmeringssprog såsom C & C++ er den mest almindelige ressource leak memory leak, hvor et program allokerer hukommelse (i C# via keyword new) men ikke deallokerer hukommelsen, når den ikke længere skal bruges  I C# er dette ikke noget problem p.g.a. automatisk garbage collection  Ved at bruge en finally blok sikres, at kode indeholdende deallokering af ressourcer altid udføres  Ud over en try blok skal der også være en catch og/eller en finally blok

8  Eksemplet viser, at en finally blok altid udføres, uanset om der opstår en exception eller ej. App’en består af 4 metoder: DoesNotThrowException, ThrowExceptionWithCatch, ThrowExceptionWithoutCatch og ThrowExceptionCatchRethrow  Linje : throw giver mulighed for manuelt at udløse en exception. Denne exception vil blive fanget af en tilhørende catch blok eller en finally, hvis der ikke er nogen catch  Linje 124: da throw står angivet uden parametre, betyder det, at den pgældende exception rethrow’es dvs. kastes tilbage til, hvor den blev kaldt. I dette tilfælde til Main-metoden

9  Eksemplet læser indholdet af tekstfilen ”messages.data” og udskriver hver linje fra filen på skærmen (try-blokken)  Hvis der opstår en IOException håndteres denne i catch-blokken  Uanset, om der har været fejl eller ej, udføres kode i finally blokken, hvor tekstfilen lukkes Eksempel fra s. 451 i ”Computing with C#” af Art Gittleman

10  Et alternativ til at placere ressource-release kode i en finally blok er at benytte det såkaldte using statement  Ved at benytte using placeres implicit kode i en try blok efterfulgt af en finally blok

11  Nedenstående kodestump er fra figur 17.5 klassen FileTestForm  Ved at benytte using vil der automatisk udføres en finally blok, der lukker filen

12  Exception typer afledes fra klassen Exception, som har flere egenskaber (eng.: properties) - vigtige egenskaber:  Message gemmer fejlmeddelelse tilknyttet et exception objekt  StackTrace repræsenterer method-call stack  InnerException angiver den oprindelige exception. Kan anvendes ved brugerdefinerede exceptions  HelpLink specificerer lokationen på en evt. hjælpefil  Source specificerer navnet på app eller objekt, der har forårsaget den pågældende exception  TargetSite angiver metoden, hvor den pågældende exception opstod

13  Eksemplet demonstrerer stack unwinding, som forekommer når en exception kastes (throw) men ikke fanges (catch) det pågældende sted i koden  Metodekaldet vil blive ”spolet tilbage” (eng.: unwound), og et forsøg laves på at fange den pågældende exception i den næste ydre try blok Method3 Method2 Method1 Main

14  Eksemplet udregner kvadratroden af et tal og viser endvidere, hvordan man kan oprette sin egen exception. (klassen NegativeNumberException i figur 13.6) – bemærk, at constructor findes i tre udgaver  Klassen bruges i catch blokken i figur 13.7, hvis der indtastes et negativt tal

 Prøv at besvare øvelse s. 554 uden at se svaret  Check derefter dine svar op imod svarene s

 Resten af dagen + fortsæt hjemme: 1. Ex s Hvis det giver mening, så læg fejlhåndtering (exception handling) ind i Spejdersystemet 16