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

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

Fördjupad Java. Undantagshantering. Fel

GUI Nyckelbeståndsdelar

OOP Objekt-orienterad programmering

Språkkonventioner och redigering av tal.

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

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

Föreläsning 14. Filhantering

Översikt. Skriva och läsa data. Kontrollflöde. Två sorters loopar. For-loop. For-loop

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

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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)

Länkade strukturer, parametriserade typer och undantag

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 7 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

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

Javas Exceptions. DD2385 Programutvecklingsteknik Fler bilder till föreläsning 7 23/ Kort om Javas Exceptions Trådar i Java

Hämta data mha URLer Föreläsning 2b. Innehåll Klassen URL

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

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

Surfning. Webbklienter och webbservrar. Specialskrivna webbservrar. Kommunikation med sockets

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck

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

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

Instuderingsuppgifter läsvecka 6 - LÖSNINGAR

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

Inre klasser Anonyma klasser Kloning I/O-ramverket. anonyma klasser

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

Objektorienterad Programmering DAT043. Föreläsning 4 23/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

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

Fakulteten för ekonomi, kommunikation och IT. Corba. Datum: Mathias Andersson

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

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

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

F4. programmeringsteknik och Matlab

F10 - Exceptions. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning 14. Träd och filhantering

LÖSNINGSFÖRSLAG TILL TENTAMEN PROGRAMMERINGSMETODIK MOM2 - JAVA, 4P.

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

Föreläsning 11 Aktiva objekt och trådar, strömmar, kommunikation DAT043,

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

Lösningar för tenta 2 DAT043,

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

Testning av program. Verklig modell för programutveckling

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

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

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

Objektorienterad Programmering (TDDC77)

/* * * Lösningsförslag tentamen DIT950 * Datum * */ /* * -1 - */ För samtliga gäller,se föreläsningsanteckningar.

List.java. List.java. Printed by Tom Smedsaas

Tentamen Programmering fortsättningskurs DIT950

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

JAVAUTVECKLING LEKTION 7

Föreläsning 6. Designmönstret Decorator I/O-ramverket

Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine.

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 7 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Lösningsförslag till tentamen

Felhantering TDDD78, TDDE30, 729A

F2 Java I/O - strömmar Meddelandesändning med TCP

Föreläsning 12. Inre klasser Anonyma klasser Kloning I/O-ramverket

Klassen javax.swing.timer

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

Recitation 4. 2-D arrays. Exceptions

TENTAMEN: Objektorienterad programmering. Läs detta! Skriv din tentamenskod på varje blad (så att vi inte slarvar bort dem).

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

Ingenjörsfirman Stéen Java Sida 1 av 1

Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 7 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Lösningsförslag, tentamen FYTA11 Javaprogrammering

1 Comparator & Comparable

Kopiering av objekt i Java

Felsökning, UML. Översikt. Java starkt typat. Typomvandling (casting) Exempelhierarki. Stark typning

Föreläsning 3. Stack

DI-institutionen Sid 1 av 5 Hans-Edy Mårtensson Sten Sundin Micael Karlsson

Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine

Lösningsförslag till tentamen

Objektorienterad programmering E. Telefonboken, än en gång. Gränssnitt. Telefonboken med gränssnitt specificerat, del 1.

Objektorienterad Programmering (TDDC77)

Föreläsning 12. Inre klasser Anonyma klasser Kloning I/O-ramverket

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

1 Grafiska komponenter, händelsehantering

Tung bakgrundsaktivitet t.ex. Aktiva objekt t.ex. Animering, simulering. DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013

Gästföreläsningen. Synpunkter?

Upplägg. Introduktion. Examination. Mål. Konsekvenser. Java. Kursen heter konstruktion, ej design eller formgivning.

F5 Kodkvalitet. Programutveckling sker i faser. Livscykel, vidareutveckling och återanvändning

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

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

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Nätverksprogrammering. Tekniker för att skriva program som kommunicerar med varandra över ett nätverk. F1 Nätverk och strömmar.

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

Klassen BST som definierar binära sökträd med tal som nycklar och enda data. Varje nyckel är unik dvs förekommer endast en

Exceptions (undantag) Murach s: kap 7

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

Tentamen Objekt-orienterad programmering i Java, 5p distanskurs

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

Objektorienterad programutveckling, fk

F2 Java I/O - strömmar Meddelandesändning med TCP EDA095 Nätverksprogrammering

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

Transkript:

Undantagshantering Fördjupad Java Ett undantag (Exception) är ett objekt som påtalar en ovanlig eller felaktig situation i ett program. Undantag kastas av programmet och kan fångas och hanteras. Java har en färdig mängd uppsättning undantag, bl.a. NullPointerException och IndexOutOfBoundsException. 1 2 Fel Undantag Felmeddelanden, Errors, betecknar ofta ett allvarligare fel som inte kan åtgärdas och kastas vanligen av JVM. Ex. OutOfMemoryError. Undantag kan hanteras på tre sätt: Hantera dem där de inträffar. Hantera dem i en annan del av programmet. Strunta i dem (undantaget tas då hand om VM och programmet avslutas efter att undantaget skrivits ut på skärmen). Rekommenderas ej. 3 4 Fånga Undantag Grupper av Undantag Undantag fångas med en try-catch-sats. try-block måste följas av ett catch-block. Enbart angivet undantag fångas av catch. Flera catch-block kan anges efter ett try-block. System.out.println(Integer.parseString(numString)); catch (NumberFormatException exception) { System.out.println("String is not a number"); Alla undantag har ärvt klassen Exception. Utnyttjas för att fånga generella undantag. Undantag som ärvt RuntimeException, måste inte fångas (ex. NullPointerException), medan de övriga måste fångas. catch (NumberFormatException e) { catch (Exception e) { 5 6 1

Skicka vidare undantag En metod kan välja att skicka ett undantag vidare. Detta anges då i metodhuvudet med throws. Flera undantag kan anges i throws. public void openlogfile() throws FileNotFoundException { Kasta undantag Man kan kasta undantag med throw. Observera att IllegalArgumentException är ett RuntimeExeption och inte behöver fångas. public Object getlistvalue(int index) { if (index < 0 index > length) throw new IllegalArgumentException(); 7 8 Egna undantag finally Det går att skapa egna undantag genom arv public class MyProgramScrewedUpException extends RuntimeException { public MyProgramScrewedUpException() { super(); public MyProgramScrewedUpException(String msg) { super(msg); Finally används när man vill man vara säker på att något skall utföras innan man lämnar en metod (t.ex. stänga en fil, sätta ett tillstånd etc.) Måste stå tillsammans med try-catch. public void method() { catch(exception e) { finally { state = 1; 9 10 Strömmar Bitströmmar Filhantering, utskrifter, inläsning m.m. hanteras i Java med s.k. strömmar (streams). Strömmar kan kopplas ihop som kedjor för att anpassa funktionaliteten efter sina egna behov. All bitströmmar är härledda från InputStream -- ström för läsning. OutputStream -- ström för skrivning. Finns två klasser av strömmar: bitströmmar -- Ström för i huvudsak binärt data. teckenströmmar -- Ström för tecken och textsträngar. 11 12 2

Bitströmmar Teckenströmmar Några vanliga bitsträmmar är: FileInputStream Teckenströmmar är härledda från: Reader BufferedInputStream ObjectInputStream ström för läsning. Writer och motsvarande för OutputStream och dessutom PrintStream. ström för skrivning. Några vanliga teckenströmmar är: FileReader, BufferedReader, och motsvarande för Writer och dessutom PrintWriter. 13 14 Undantag Öppna en textfil och skriva text till den. // Öppna filen och skapa en ström till den. FileWriter fw = new FileWriter("MinFil.txt"); // För effektivitet använd en buffrad ström De flesta filhanteringsmetoder kastar undantag som måste hanteras. Alla är de av typen IOException, t.ex. FileNotFoundException. // och koppla den till filströmmen. BufferedWriter bw = new BufferedWriter(fw); FileWriter fw = new FileWriter("MinFil.txt"); // En anpassad ström för skriving är: PrintWriter pw = new PrintWriter(bw); catch(filenotfoundexception e) { // Skriv till filen. pw.println("innehåll i min första Java-fil"); // Stäng filen pw.close(); System.err.println("Filen kunde inte öppnas"); catch(ioexception e) { System.err.println(Det uppstod ett fel); e.printstacktrace(); 15 16 in, out, err Koppla bit- och teckenströmmar System finns färdiga strömmar. InputStreamReader isr = System.in new InputStreamReader(System.in); Läsning från tangentbord (InputStream). BufferedReader stdin = System.out new BufferedReader(isr); Skrivning till skärm (PrintStream). System.err String s = stdin.readline(); Skrivning av felmeddelanden. (PrintStream). 17 18 3

Gränssnitt Gemensamma egenskaper hos objekt utan arv. : En boll och ett hjul kan båda rulla, men har inga andra gemensamma egenskaper. En boll ''är en'' leksak och ett hjul ''är en'' bildel. Gränssnitt garanterar funktionalitet hos objekt. Används enbart till metoder. Ingen kod finns i gränssnitt, enbart prototyper. Skapas med interface och används med implements. public interface Rollable { public void roll(); public class Ball implements Rollable extends Toy { public void roll() { public class Weal implements Rollabel extends Carpart { public void roll() { 19 20 forts. Serialisering av Objekt Rollable weal = new Weal(); Rollable ball = new Ball(); ball.roll(); weal.roll(); Objekt kan serialiseras för att skrivas och läsas över strömmar. Vid serialisering översätts objektet till information (namn, värden på attribut m.m.) som sedan kan användas för att återskapa objektet. Objekt som skall serialiseras implementerar gränssnittet Serializable. Om objektet är ett aggregat måste även attributen ha implementerat Serializable. 21 22 public class Data implements Serializable { Inre klasser public int value1; public float value2; Kan skapa klasser inom klasser. Klassen enbart åtkomlig via sin moderklass. FileOutputStream fs = new FileOutputStream("Datafil.dat"); Praktiskt för skydd av internt data. ObjectOutputStream os = new ObjectOutputStream(fs); Data[] data = new Data[2]; data[0] = new Data(3, -0.2); data[1] = new Data(2, 5.3); os.writeint(data.length); os.writeobject(data[0]); os.writeobject(data[1]); 23 24 4

Fortsättning public class List { protected class ListItem { public ListItem next = null; public ListItem previous = null; public void addbefore(object value) { ListItem item = new ListItem(value); if (isempty()) { current = item; else { public Object value = null; item.previous = current.previous; public ListItem(Object value) { this.value = value; item.next = current; if (current.privious!= null) current.previous.next = item; current.previous = item; protected ListItem current = null; protected int index = 0; protected int length = 0; index++; length++; 25 26 5