Exceptions. 2 Nordjyllands Erhvervakademi – 2009 Objectives “Unfortunately, errors are a part of life. Some are detected by the compiler, some are detected.

Slides:



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

IT Projekt Portefølje Management: styringsmæssige og koordineringsmæssige problemer i en offentlig organisation.
Torbenfeldvej Vallensbæk strand Tlf.: – – dagligt brug af vores hjemmeside •AGEN LYS har en stor og omfattende.
Teknik event i det mørke Jylland IV Geocaching uden at det koster et ton papir og litervis af printerblæk Understøttes af: Smart phones PDA’ere Flere af.
Overskrift her Navn på oplægsholder Navn på KU- enhed For at ændre ”Enhedens navn” og ”Sted og dato”: Klik i menulinjen, vælg ”Indsæt” > ”Sidehoved / Sidefod”.
1 • Best practice for exception handling • Exception klasser • Division med nul uden exception handling • Division med nul med exception handling •. NET.
17. januar 2009Teknik event i det mørke Jylland III - CacheMate 1 Geocaching med CacheMate  Hvad er CacheMate?  Indlæsning af Cachebeskrivelser  Bruger.
Velkommen til Softwarekonstruktion
5. WinForms: GUI Programmering i.NET. 2 Nordjyllands Erhvervakademi Mål “.NET supports two types of form-based apps, WinForms and WebForms. WinForms.
Aktivering af link til passwordliste i SFX Anders Vestergaard, DBC, 19. februar 2013 OBS: Inden passwordliste aktiveres i SFX skal liste være oprettet.
Udvikling af ANDROID programmer (apps) Jens Bennedsen og Jesper Tørresø marts 2011.
Test First Development
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.
Indledende Programmering Uge 2 - Efterår 2006 Selektioner og interaktion mellem objekter Susanne Brix Lindros.
C#: Udtryk og metoder. Indhold “With regards to programming statements and methods, C# offers what you would come to expect from a modern OOPL…” Udtryk.
Distribueret programmering, specielt.NET Remoting Rasmus D. Lehrmann DM
Object-Orienteret Programmering og Design. 2 Nordjyllands Erhvervakademi – 2009 Indhold “Classes, objects and object-oriented programming (OOP) play a.
NetBeans Installation og brug.
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.
Hvordan man skriver koden.
01 – Java platform for starters. 2 NOEA2009Java-kursus – Java Platform Introduktion til Java Baggrund Hvad er Java? Faciliteter i Java.
VOOP, 8 april Refleksion i objekt orienterede programmeringssprog Mandag 8/ Kasper Østerbye.
Tietgen Skolen Trick med facadeklasse og serialisering ”Trick” – model ”samles” til eet overordnet objekt Alle klasser i model skal have attriutten [Serializable]
ASP.NET Cache, State DataGrid og Diagnostics. Agenda – ASP.NET Cache, State og Cookies ( 1 del ) –Cache –Static member –Application State –Session State.
Kursus om borger.dk og brugen af digital signatur
Mød Microsoft – for udviklere & arkitekter Visual Studio, Express og Team System Niels Hilmar Madsen Microsoft
Masterpages/Otto Knudsen 1 Master Pages Master Pages i ASP.NET 2.0.
Introduktion/Otto Knudsen 1 Overblik WebForms ASP.NET.
Oprettelse af tabeller (Access, del 2)
Hvorfor trådning? Performance Responsivness. Succeskriterier Forbedring af performance –Opgaverne skal være uafhængige –Jo flere afhængige opgaver, jo.
Indledende Programmering Uge 5 - Efterår 2006 Om at udvikle korrekte og pålidelige programmer Susanne Lindros.
© 2013 Netcompany A/S Netcompany A/S · Grønningen 19 · 1270 København K · Tlf Side 1 Simon Otto Nielsen Diplomingeniør i informations og kommunikationsteknologi.
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 Opsamling: afvikling af Java-programmer Input fra keyboard og fil Fra en prompt Fra BlueJ Fra NetBeans.
Start test 1 KLIK HER. Hvilken tast skal du bruge for at redigere en celle direkte? 2 F1 F2 F5 F7.
18 – Java Server Faces. 2 NOEA2009Java-kursus – JSF 2 Web-applikationer - 1 Brugere interagerer med en Web-browser Browseren sender forespørgsler til.
MSBuild & Team Build i C#/C++ solutions VSTS ERFA d. 25 November.
Rapporter (Access, del 5). RHS – Informationsteknologi – Udgangspunkt Vi har oprettet en database Vi har defineret en eller flere tabeller, og.
Lektion 7 Læsestof: Kopier fra Caranno
Fundamentale datastrukturer
1..NET Arkitektur. 2 Nordjyllands Erhvervakademi Mål “Microsoft.NET is based on the Common Language Runtime (CLR) and an extensive set of Framework.
Opslagsfelter (Access, del 6). RHS – Informationsteknologi – Udgangspunkt Vi er ofte i den situation, at valg af en type for et felt ikke begrænser.
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,
DIEB4.1 Kursusgang 4 Oversigt: Sidste kursusgang Opgaver Aktivitet 2: Generer design (fortsat) Design af interaktionselementer.
Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns.
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
11 - Exceptions. 2 NOEA2009Java-kursus – Exceptions Hvad er en exception? En undtagelse. Typisk en fejl der opstår runtime Afbryder det normale programflow.
Internetteknologi (ITNET2) Kort teknisk ASP.NET introduktion Mandag den 19/ Jesper Tørresø.
Fremstilling af Simple WEB steder [ITPL] Foråret 2004
KF04 GRAY Item 2, 12, 22, 32, 42, 52. Consider a builder when faced with many constructor parameters Item 2.
Oprettelse af tabeller (Access, del 2)
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.
Usability ITU, forår 2008 Usability ITU Forår 2008 ’Teori 2’ 3. kursusgang, 14. februar 2008.
C#: Data Typer. 2 Nordjyllands Erhvervakademi Indhold: “.NET is designed around the CTS, or Common Type System. The CTS is what allows assemblies,
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
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.
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Indledende Programmering Uge 6 - Efterår 2006
 Jens Bennedsen, 2003, revideret af EE Introducerende objektorienteret programmering MVC Et mønster for grænseflader.
RMS - Record Management System Record Store En Record er et bytearray af vilkårlig størrelse En RecordStore er et antal Records nummerede.
Omsætning af en model til en RDB Jesper Tørresø DAB1 F Marts 2008.
WebApi service part 2 Routning og Action Simpel test-client (javascript) Session og Application data.
Software Testing Software testing.
Simpel test-client (javascript) Session og Application data
Software Construction
Præsentationens transcript:

Exceptions

2 Nordjyllands Erhvervakademi – 2009 Objectives “Unfortunately, errors are a part of life. Some are detected by the compiler, some are detected by the CLR, and the remainder go uncaught. C# and Visual Studio.NET provide many techniques for quickly identifying, dealing with, and eliminating errors. But you have to apply them…” Debugging i Visual Studio Exception handling i C# Applikationsdesign

3 Nordjyllands Erhvervakademi – 2009 Del 1 Debugging i Visual Studio…

4 Nordjyllands Erhvervakademi – 2009 Debugging i Visual Studio To metoder: –print debugging –source-level debugger tilgængelig i IDE I den første kan alle være med Den sidste er meget mere kraftfuld

5 Nordjyllands Erhvervakademi – 2009 Print debugging Fra en compileret application: –Console.WriteLine eller MessageBox.Show Hvis du kører i Visual Studio: –System.Diagnostics.Debug.WriteLine skriver til Output vinduet

6 Nordjyllands Erhvervakademi – 2009 Source-level debugger Mange features: –pause program et hvilket som helst sted –step-by-step exekvering –se indhold af variable, objekter, datastrukturer –vis metodekalds stak –etc. Hvordan bruges den? 1.sæt et breakpoint for at stoppe program 2.se Debug menu

7 Nordjyllands Erhvervakademi – 2009 Sæt breakpoints Det letteste er at klikke i venstre margin af source koden Andre muligheder: –se Debug >> New Breakpoint… –du kan breake når data ændres, eller med en betingelse, eller …

8 Nordjyllands Erhvervakademi – 2009 Debug menu Step-by-step eksekvering –step into –step over –step out of View locals Immediate window

9 Nordjyllands Erhvervakademi – 2009 Debugging vs. Exception Handling Debugging er reactive –den hjælper dig med at identificere og rette errors efter de opstår –i.e. program er gået ned, vil gå ned, eller giver forkerte resultater Exception handling er proactive –baseret på tanken at nogle fejl kan håndteres –i.e. program opfanger fejl, retter problemet, og bliver ved med at køre

10 Nordjyllands Erhvervakademi – 2009 Del 2 Exception handling i C#…

11 Nordjyllands Erhvervakademi – 2009 Exceptions Exception = undtagelse Et signal for at en undtagelses tilstand er opstået Examples: –divide-by-zero –arithmetic overflow –array access out of bounds –null object reference –file not found –database server unreachable

12 Nordjyllands Erhvervakademi – 2009 Exception typer Hver exception type er defineret med en klasse i FCL To hovedkategorier: –System.SystemException –System.ApplicationException System.Exception System.SystemException System.ApplicationException system-defined exceptions user-defined exceptions

13 Nordjyllands Erhvervakademi – 2009 Exception handling Først skal du vurdere hvilke exceptions der kan opstå Så skal du beslutte hvilke du vil håndtere Dernæst skal du skrive koden, der håndterer den givne exception Bemærk: –exception handling er valgfri –god exception handling er svært

14 Nordjyllands Erhvervakademi – 2009 Hvad nu, hvis du ikke håndterer en exception? CLR skriver en meddelse, hvor brugeren kan vælge at forsætte eller afbryde Eksempel: –Dit program prøver at åbne en fil, der ikke findes System.IO.FileStream file; file = new System.IO.FileStream("C:\\readme.txt", System.IO.FileMode.Open, System.IO.FileAccess.Read);

15 Nordjyllands Erhvervakademi – 2009 Exception handling i C# Gøres med try-catch –prøv (try) at udføre en eller flere linier –fang (catch) de exceptions som måtte komme try { // to perform one or more tasks, which might raise an exception… } catch(Exception ex) { // if anything goes wrong, we end up down here to handle it… } exception

16 Nordjyllands Erhvervakademi – 2009 Eksempel Prøv at åbne filen fra før… try { System.IO.FileStream file; file = new System.IO.FileStream("C:\\readme.txt", System.IO.FileMode.Open, System.IO.FileAccess.Read);. file.Close(); } catch(Exception ex) { MessageBox.Show("Error: " + ex.Message); }

17 Nordjyllands Erhvervakademi – 2009 Semantikken i try-catch Control flows i en af to veje: –ingen exception opstår:vi springer Catch blokken over –exception opstår:Der hoppes til Catch med det samme try { statement1 statement2 statement3 } catch(Exception ex) { statement4 statement5 } statement6 no exception statement1 fails

18 Nordjyllands Erhvervakademi – 2009 Forandring i default control flow Efter at have fanget en exception, kan du: –håndtere exception’en & fortsætte afvikling af programmet –kaste exception’en videre, fordi du ikke kunne håndtere den –afslutte programmet try {. } catch(Exception ex) { throw ex; // rethrow exception to caller }

19 Nordjyllands Erhvervakademi – 2009 Oprydning For at sikre oprydning, brug try-catch-finally Finally blokken køres altid efter try eller catch… System.IO.FileStream file = null; try { file = new System.IO.FileStream("C:\\readme.txt", System.IO.FileMode.Open, System.IO.FileAccess.Read);. } catch(Exception ex) { throw ex; } finally { // ensure file is closed if (file != null) file.Close(); }

20 Nordjyllands Erhvervakademi – 2009 Del 3 Applikationsdesign…

21 Nordjyllands Erhvervakademi – 2009 Exception udbredelse Hvad sker der når en Exception bliver kastet? –Den sendes gennem kæden af metodekald, for at en eller anden skal håndtere den –Hvis ingen håndterer den, fanger CLR den og lukker programmet Main()One()Two()Three()CLR call sequence exception thrown in Three, call stack is unwound in search for handler…

22 Nordjyllands Erhvervakademi – 2009 Hvordan ved du hvilken exception, der er kastet? Exception typen er bestemt af objekt typen… –du kan bruge is operator –du kan bruge multiple catch blokke, prioriteret top-down… try {. } catch(System.IO.FileNotFoundException ex) {... } catch(System.ArithmeticException ex) {... } catch(Exception ex) { // generic catch-all... }

23 Nordjyllands Erhvervakademi – 2009 Klasse design Klasser bør bruge try-catch-finally Hvis en exception opstår: –klasser bør ikke kommunikere med brugeren –De bør kaste deres egne custom exceptions try {. } catch(Exception ex) { throw new MyCustomException("...", ex); }

24 Nordjyllands Erhvervakademi – 2009 Applicationsdesign I det mindste bør programmet fange, logge og afslutte hvis en exception opstår –gøres let i Main metoden… public static void Main() { try { // run GUI app… Application.Run( new Form1() ); } catch(Exception ex) { System.Diagnostics.EventLog.WriteEntry("MyApp", ex.Message); System.Diagnostics.EventLog.WriteEntry("MyApp", ex.StackTrace); MessageBox.Show("Halting due to error: " + ex.Message); }

25 Nordjyllands Erhvervakademi – 2009 Opsummering Fejl opstår desværre i programmer Nogle kan du håndtere, andre kan du ikke C# tilbyder rimelig understøttelse af exception handling –på niveau med andre sprog Bemærk! –sværere end det ser ud til –et godt design kræver en betydelig indsats –glem ikke at teste!