Presentation laddar. Vänta.

Presentation laddar. Vänta.

Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 11 Avlusning Debugger (”avlusare”) Breakpoints Watch.

Liknande presentationer


En presentation över ämnet: "Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 11 Avlusning Debugger (”avlusare”) Breakpoints Watch."— Presentationens avskrift:

1 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 11 Avlusning Debugger (”avlusare”) Breakpoints Watch

2 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 22 Kompileringsfel class FelTest1 { public static void Main ( ) { MittSpace.MittHello.SayHello(); int talet = 7; System.Console.WriteLine(Talet); } Två potentiella fel i detta exempel: CS0006 Saknad dll-fil CS0103 ”Felstavning” Läs felmeddelandena noggrant, och tolka dem ”rätt”. Ofta är ett visst kompileringsfel egentligen inte ett fel, utan en konsekvens av ett fel någonstans tidigare i programmet.

3 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 33 Logiska fel class FelTest2 { public static void main ( ) { int antalTimmar = 40; int timlön = 110; int summa = antalTimmar + timlön; System.Console.WriteLine(summa); } Två potentiella fel i detta exempel: ”Felstavning” Felaktig algoritm Logiska fel är luriga, eftersom de inte ger kompileringsfel, men ett felaktigt resultat vid exekvering. Det är viktigt att ”torrköra” sina algoritmer, för att se att de räknar rätt.

4 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 44 Spårutskrifter class MyTracking { public static void Main() { int a = 7; int b = 0; System.Console.Error.WriteLine ("1. a:" + a + " b:" + b); int c = a / b; System.Console.Error.WriteLine ("2. c:" + c); System.Console.WriteLine(c); } }

5 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 55 Exception Ett Exception är ett tillstånd, som uppstår under exekveringen, som vanligtvis innebär något felläge Vissa fel kan vi hantera (fånga) File not found Divide by 0 Array access Casting error Vissa kan vi inte hantera LinkageError VerificationError

6 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 66 Grundstrukturen try { … // kod där undantag kan kastas } catch (Exception e) { … } // kan vara flera catch efter varandra finally { … } // Exekveras alltid, om man har den med

7 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 77 try try- blocket innehåller den kod, där vi kan anta att ett Exception kan komma att kastas. Koden kan explicit kasta ett Exception. if (...) throw... Systemet kan kasta ett Exception (ex division med noll), utan att vi själva skriver throw

8 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 88 catch catch-block har kod för att hantera Exceptions Kan vara mer än ett catch-block. Måste vara minst ett. Varje catch-block är en “exception handler”. Varje catch-block specificerar typen av Exception det kan fånga och hantera. Om inget Exception kastas, exekveras inte heller catch- blocket. Om ett Exception kastas, men inget catch-block för detta finns: yttre try-catch-block söks igenom för en hanterare för detta Exception Undantaget “kastas vidare” till anropande metod

9 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 99 finally finally-blocket exekveras alltid, oavsett om ett Exception kastas eller inte Lämpligt för att “städa upp” efter sådant som kan ha initierats i try-blocket.

10 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 10 try { programsatser; try { programsatser; } catch (Xx fel) { programsatser; } programsatser; } catch (Xx fel) { programsatser; } catch (Yy fel) { programsatser; } Nästlat try- block Propagering Om det inte finns någon hanterare för ett specifikt Exception, skickas kontrollen till “anropande” metod, I hopp om att det kan hanteras där Detta kallas för “exception propagation.” Det kan fortsätta tills den slutligen når själva operativsystemet

11 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 11 throw class ExceptionTest { public static void Main( ) { System.Console.Write("Ett tal:"); int a = int.Parse( System.Console.ReadLine() ); Exception ex = new Exception("Mitt felobjekt!"); try { if (a == 1) throw new Exception(); if (a == 2) throw new Exception("Ett annat felobjekt!"); if (a == 3) throw ex; } catch (Exception e) { System.Console.WriteLine( e.Message ); System.Console.WriteLine( e.StackTrace ); System.Console.WriteLine( e ); }

12 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 12 Att definiera egna Exceptions public class MyException : Exception { public MyException( ) : this("Sorry, mitt fel!") { } public MyException(String msg) : base(msg) { } Vanligen två konstruktorer: 1.Med en String som parameter Anropar superklassen 2.Utan parametrar Anropar den andra med förbestämd textsträng

13 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 13 Använda egna Exceptions public class MyExceptionTest { public static void Main ( ) { try { Metoden(); } catch (Exception e) { System.Console.WriteLine( e.StackTrace ); } public static void Metoden ( ) { throw new MyException(); }

14 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 14 Exempel: Division med noll public class NollDivision : ArithmeticException { public NollDivision( ) { super("Division med noll!"); } public NollDivision(String msg) { super(msg); }

15 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 15 Exempel: Division med noll public class DivisionTest { public static void Main () { System.Console.Write(“Tal a: “); int a = int.Parse(System.Console.ReadLine()); System.Console.Write(“Tal b: “); int b = int.Parse(System.Console.ReadLine()); try { double d = Quotient(a, b); System.Console.WriteLine(d); } catch (NollDivision nd) { System.Console.WriteLine( nd ); } public static double Quotient (int numerator, int denominator) { if (denominator == 0) throw new NollDivision(); return (double) numerator / denominator; }

16 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 16 Java har två typer av undantag (Exception): unchecked (RunTimeExceptions) måste inte programmeraren koda hantering för (ex felaktiga talformat, felaktig indexering av arrayer). checked måste programmeraren koda hantering för (exempelvis allt som kan relateras till in- och utmatningar). Om programmet anropar en metod som kan kasta (throw) en checked exception, måste programmet ha kod för att hantera detta. Exceptions i Java

17 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 17 Undantagshantering Några skillnader mellan olika språk C#JavaC++ Alla undantag är objekt Undantagen kan representeras av annat än objekt, ex heltal, textsträngar Alla undantag är ”unchecked” ”checked” undantag kräver obligatoriska try- catch block, eller ”throws” i metodsignaturen Alla undantag är ”unchecked” Catch-block utan Exception- argument tillåtet Catch-block måste ange Exception-typ


Ladda ner ppt "Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 11 Avlusning Debugger (”avlusare”) Breakpoints Watch."

Liknande presentationer


Google-annonser