Exceptions (undantag) Murach s: kap 7

Relevanta dokument
Objektorienterad programmering

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Metoder (funktioner) Murach s: kap Winstrand Development

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Objektorienterad Programmering (OOP) Murach s: kap 12-16

Övning. Introduktion och förberedelser

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

Konvertering från sträng. Winstrand Development

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

Arv Murach s: kap 14

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Objektorienterad Programmering (TDDC77)

Att skriva till och läsa från terminalfönstret

Föreläsnings 9 - Exceptions, I/O

Windows Forms Winstrand Development

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

C++ Objektorientering - Klasser. Eric Elfving

Numeriska Metoder och Grundläggande Programmering för P1, VT2014

1 Comparator & Comparable

C++ Objektorientering - Klasser. Eric Elfving Institutionen för datavetenskap

Sammanfattning. Listor. List-manipulering. Matris. /home/lindahlm/activity-phd/teaching/11dd1310/exercise3/exercise3.py September 13, 20111

Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering

Föreläsning 14. Filhantering

Undantagshantering. Fördjupad Java. Fel. Undantag. Fånga Undantag. Grupper av Undantag

Generiska konstruktioner. Kursbokens kapitel 13

Undantagshantering. Fördjupad Java. Undantag. Fel. Grupper av Undantag. Fånga Undantag

if (n==null) { return null; } else { return new Node(n.data, copy(n.next));

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

Objektorienterad Programmering (TDDC77)

Felhantering. Andra brott mot språkets regler. Man kan också i programmet bryta mot ett antal olika regler som gäller. Exempelvis:

TDDC76 - Programmering och Datastrukturer

Fördjupad Java. Undantagshantering. Fel

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Tentamen LÖSNINGSFÖRSLAG. c) Tilldelningen C x = new D() ger kompileringsfel eftersom klassen D är abstrakt.

Lösningsförslag, tentamen FYTA11 Javaprogrammering

Fortsättningskurs i programmering F 5. GUI händelsehantering - undantagshantering Hugo Quisbert AWT. Paket för hantering av grafik

Tentamen FYTA11 Javaprogrammering

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

F4. programmeringsteknik och Matlab

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

Övning Arbeta med klasser

Kapitel 6 - Undantag

Laboration 1. Utgåva 1 Gäller från

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

Undantag. Engelska: exceptions. Skansholm: exceptionella händelser

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Testning av program. Verklig modell för programutveckling

Malmö högskola 2007/2008 Teknik och samhälle

Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klass

FactoryCast HMI. Premium & Quantum PLC. Applets

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Inlämningsuppgift MiniPlotter

Felhantering TDDD78, TDDE30, 729A

Laboration A Objektsamlingar

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Detta dokument är ett exempel, cirka hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling

Länkade strukturer, parametriserade typer och undantag

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

TDIU01 - Programmering i C++, grundkurs

Klassen javax.swing.timer

Obligatorisk uppgift: Numerisk kalkylator

Concurrency Saker händer samtidigt. Process En instans av ett program

Föreläsning 3. Stack

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

Kontraktsprogrammering

Överlagring, static, testning, formella metoder och undantag! Förelasning 13!! TDA540 Objektorienterad Programmering!

Föreläsning 3 Innehåll. Generiska klasser. Icke-generisk lista ArrayList, skiss av implementering. Icke-generisk lista Risk för fel

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

Del A (obligatorisk för alla)

Tentamen, EDAA20/EDA501 Programmering

public boolean containskey(string key) { return search(key, head)!= null; }

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Programmering för språkteknologer II, HT2014. Rum

Föreläsning 3-4 Innehåll

F3: Recursive descent, tokenisering, avbildningar och undantag. Carl Nettelblad

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

Lösningsförslag till tentamen

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Obligatorisk uppgift 5

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Arrayer (vektorer) Murach s: kap Elektronikcentrum i Svängsta AB

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

JAVAUTVECKLING LEKTION 4

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Innehåll. Exceptionella händelser (exceptions, undantag ) Felhantering Tre nivåer av felhantering: Nivå 2: exceptions (eller returvärde)

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Transkript:

Exceptions (undantag) Murach s: kap 7 2013-01-28 1 Winstrand Development

Exceptions (undantag) Inträffar ett oförutsägbart fel i när programmet körs kommer ett undantag (exception) att inträffa Undantaget kommer att kastas (throw) För att hantera undantaget måste detta tas emot (catch) Om vi inte fångar undantaget kommer programmet att krascha Winstrand Development 2013-01-28 2

Hantera undantag Inträffar ett exception kommer Visual Studio stanna debuggern och visa ett felmeddelande Alla undantag härstammar från Exceptionklassen //FormatException string witherror = "10.Fail"; double value = double.parse(witherror); //DivideByZeroException int iszero = 0; int badcalc = 3 / iszero; Winstrand Development 2013-01-28 3

Hantera undantag Hanteringen av ett exception sker i ett trycatch-block Kritiska instruktioner körs i try-blocket Om ett undantag kastas i try-blocket fångas det upp i catch-blocket. try //"Försök" att utföra kritisk instruktion... catch //Sker ett undantag hanterar vi detta här //Här fortsätter programmet som vanligt Winstrand Development 2013-01-28 4

Exempel på att hantera undantag Try-blocket innehåller två farliga instruktioner double.parse Division med value try decimal result = 0; //Parse är kritisk kan bara hantera siffror decimal value = decimal.parse(txtvalue.text); //Kritiskt - value kan vara 0 result = 30.0m / value; catch //Hantera undantaget //I detta fall skrivs ett meddelande ut //i en meddelanderuta MessageBox.Show("Ett fel inträffade", "Error"); Winstrand Development 2013-01-28 5

Fånga undantag I catch kan vi ange att vi fångar ett specifikt undantag Beskrivning hjälp om undantaget: Message en sträng som beskriver felet StackTrace Metoderna som anropats när felet inträffade try decimal result = 0; decimal value = decimal.parse(txtvalue.text); result = 30.0m / value; catch (Exception ex) MessageBox.Show(ex.Message, "Error"); Winstrand Development 2013-01-28 6

Hantera specifika undantag Alla undantag härstammar från basklassen Exception Vi kan strukturerat hantera undantagen Ett catch-block per undantag som ska hanteras Ange det mest specifika undantaget först Winstrand Development 2013-01-28 7

Hantera specifika undantag string msg = string.empty; try decimal result = 0; decimal value = decimal.parse(txtvalue.text); result = 30.0m / value; msg = "Resultat: " + result; catch (FormatException ex) msg = "Inte ett giltigt tal." + Environment.NewLine + ex.stacktrace; catch (DivideByZeroException ex) msg = "Kan inte dividera med 0." + Environment.NewLine + ex.stacktrace; catch (Exception ex) //tar hand om resterande undantag msg = ex.message + Environment.NewLine + Environment.NewLine + ex.stacktrace; MessageBox.Show(msg); Winstrand Development 2013-01-28 8

Finally Läggs till efter catch-blocken Körs alltid, oavsett om ett exception inträffat eller inte Användbart när vi måste lämna ifrån oss resurser try //... catch (Exception ex) //... finally //Körs alltid Winstrand Development 2013-01-28 9

Finally string msg = string.empty; try //Känsliga operationer DatabaseConnection.Open(); UseResources(); msg = DatabaseConnection.Read(); catch (Exception ex) msg = ex.message + Environment.NewLine + Environment.NewLine + ex.stacktrace; finally //Stäng alltid databaskoppling DatabaseConnection.Close(); CleanupResources(); MessageBox.Show(msg); Winstrand Development 2013-01-28 10

Kasta exceptions Vi kan generera undantag själva När ett undantag genereras kastar vi det Görs med nyckelordet throw decimal SafePositiveDivide(decimal numerator, decimal denominator) decimal result; if (denominator == 0m) throw new DivideByZeroException("Kan inte dividera med 0"); else if (numerator < 0m denominator < 0m) throw new ArithmeticException("Kan bara beräkna positiva tal"); result = numerator / denominator; return result; Winstrand Development 2013-01-28 11

Rethrow exceptions I catch-blocken kan vi kasta vidare ett exception Görs om vi inte kan/vill hantera undantaget i metoden Undantaget kastas till anropande metoden Använd throw på det exception du vill kasta vidare try decimal value = decimal.parse(txtvalue.text); catch (Exception ex) throw ex; Winstrand Development 2013-01-28 12

Validering Murach s s. 200-212 2013-01-28 13 Winstrand Development

Validering Datavalidering Se till att data är i rätt format Exempel Det måste finnas text i en textruta Texten i en textruta måste vara i double-format Ett tal ska ligga innanför givna gränser Görs med if-satser och try-catch Misslyckas valideringen ska användaren få meddelande om detta Winstrand Development 2013-01-28 14

Validering Validering i metoder Ofta utförs samma validering på flera kontroller Skapa metoder som tar emot en TextBox som parameter och utför validering på denna Winstrand Development 2013-01-28 15

Validering Exempel private void btncalculation_click(object sender, EventArgs e) if (IsPresent(txtValue1, "Värde 1") && IsDecimal(txtValue1, "Värde 1")) decimal value = decimal.parse(txtvalue1.text); //Texten är validerad och säker att använda... bool IsPresent(TextBox box, string name) bool success = true; if (box.text == "") MessageBox.Show(name + " måste innehålla ett värde", "Fel"); success = false; return success; bool IsDecimal(TextBox box, string name) bool success = true; try decimal.parse(box.text); catch (FormatException) MessageBox.Show(name + " är inte i decimalformat", "Fel!"); success = false; return success; Winstrand Development 2013-01-28 16

Validering Validera flera kontroller Bygg på i if-satsen med && (logiskt OCH) Kan lägga validering av kontrollerna i en egen metod private void btncalculation_click(object sender, EventArgs e) if (IsPresent(txtValue1, "Värde 1") && IsDecimal(txtValue1, "Värde 1") && IsPresent(txtValue2, "Värde 2") && IsDecimal(txtValue2, "Värde 2")) //Båda kontrollerna har validerats och säkra att använda... decimal value1 = decimal.parse(txtvalue1.text); decimal value2 = decimal.parse(txtvalue2.text); //beräkningar Winstrand Development 2013-01-28 17