INF1010 våren 2017 Onsdag 25. januar. Litt om unntak i Java

Like dokumenter
INF1010 våren 2019 Onsdag 30. januar. Mer om unntak i Java (med litt repetisjon av I/O først)

INF1010 våren 2018 tirsdag 23. januar

INF1010 våren Arv og subklasser del 1 (pluss litt I/O og unntaksbehandling)

Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

INF1010 våren Arv og subklasser del 1 pluss (hvis vi har tid) litt om Unntak, IO og Scanner-klassen

Inf1010 Våren Feilsituasjoner og unntak i Java. Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

Oversikt. Feil i programmet hva skjer? Array indeks utenfor sine grenser. Inf1010 Våren Feilsituasjoner og unntak i Java

Inf1010 Våren Feilsituasjoner og unntak i Java. Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

INF1010 våren Arv og subklasser - del 2

Inf1010 Våren Feilsituasjoner og unntak i Java. Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

Oversikt. Feil i programmet hva skjer? Array indeks utenfor sine grenser. Inf1010 Våren Feilsituasjoner og unntak i Java

Oversikt. Array indeks utenfor sine grenser. Feil i programmet hva skjer?

INF1010 våren Generalisering -spesialisering Gjenbruk av klasser. Ved arv. Klasse-hierarkier. Stein Gjessing.

Uke 5, 27. januar Arv og subklasser del I. Stein Gjessing Institutt for informatikk

INF 1010, vår 2005 Løsningsforslag uke 11

INF1010 våren 2010 Torsdag 4. februar. Arv og subklasser del I. Emneoversikt subklasser (2 uker) Hva er en subklasse? Eksempel: Universitetsregister

INF1010 våren Arv og subklasser del I

Kapittel 11: Unntakshåndtering. Java som første programmeringsspråk

Kapittel 11: Unntakshåndtering. Java som første programmeringsspråk

Kapittel 13: Unntakshåndtering

Videregående programmering 6

Kapittel 13: Unntakshåndtering

INF1010, 22. mai Prøveeksamen (Eksamen 12. juni 2012) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

Leksjon 7. Filer og unntak

IN Notat om I/O i Java

Jentetreff INF1000 Debugging i Java

Repetisjon. INF gruppe 13

Litt om pakker og mest om data inn og ut

INF1000-SIKT - Notat om I/O i Java

INF Notat om I/O i Java

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

Fra Python til Java, del 2

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre

D Feilhåndtering og unntaksklasser

Klasser skal lages slik at de i minst mulig grad er avhengig av at klienten gjør bestemte ting STOL ALDRI PÅ KLIENTEN!

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Eivind Storm Aarnæs

Læringsmål for forelesningen

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 15.

UNIVERSITETET I OSLO

INF1010 våren januar. Objektorientering i Java

IN-OO1-EVU Dag 3. Stein Gjessing. Kapittel 4: I/O, if og unntak (exceptions) Kapittel 5: While, switch, mer I/O Kapittel 6: Mengder av objekter

Enkel lesing og skriving i Java

Post-it spørsmål fra timen (Arv og subklasser)

INF1010 våren Arv og subklasser, del 2

IN1010 våren januar. Objektorientering i Java

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

TOD063 Datastrukturer og algoritmer

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

INF1010, 21. februar Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

Konstruktører. Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver. skjer følgende:

INF Notater. Veronika Heimsbakk 10. juni 2012

Løsningsforslag Test 2

INF1010 Eksamenstips. Løsningsforslag prøveeksamen del 1.

INF1010 våren 2017 Torsdag 2. februar. Arv og subklasser - del 2

IN1010 våren 2018 Tirsdag 6. februar. Arv og subklasser - del 2

Gjennomgang av eksamen H99

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF Høst 2011)

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2

import java.io.*; import java.util.*; import javagently.text;

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

Hittil har programmene kommunisert med omverden via tastatur og skjerm Ønskelig at data kan leve fra en kjøring til neste

INF1010 våren Arv og subklasser - del 2

Ole Christian Lingjærde, 12. september 2013

2 Om statiske variable/konstanter og statiske metoder.

Forelesning inf Java 4

Dagens tema: Kompilatorens struktur. De ulike modulene Prosjektet. Oppbyggingen Pakker i Java Avbrudd («exceptions») Enum-klasser i Java

INF1010, 8. mars Om klassehierarkier, grensesnitt (interface) og multippel arv. Konstruktører i subklasser. Unntak.

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Eksempel: Body Mass Index (BMI) Forelesning inf Java 3. Ferdig program (første del) Ferdig program (siste del)

INF Løsning på seminaropppgaver til uke 8

Eksamen. Objektorientert Programmering IGR 1372

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 14.

Kapittel 8: Programutvikling

Å lese tall fra en fil, klassen Scanner

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4

Forelesning inf Java 4

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

INF2100. Oppgaver 26. september til 1. oktober 2007


INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

Bruk av class Scanner, split(), FileWriter og Formatter som alternativ til easyio i INF1000.

INF2100. Oppgaver 9. oktober 2012 C 100 X 10

Bruk av class Scanner, FileWriter og Formatter som alternativ til EasyIO i INF1000.

Hvordan skrive Flok og Flass kode? I mange tilfelle er det svært enkelt:

INF2100. Oppgaver 23. og 24. september 2010

INF2100. Oppgaver 6. og 11. oktober 2011 C 100 X 10

INF 1000 (uke 2) Variabler, tilordninger og uttrykk

INF1010 Tråder J. Marit Nybakken Motivasjon. Å lage en tråd

I dag skal vi se på. INF 1000 (uke 2) Variabler, tilordninger og uttrykk. Gruppene starter i dag! Klart for første oblig

INF 1000 (uke 2) Variabler, tilordninger og uttrykk

INF2100. Oppgaver uke 40 og

Eksempel: Body Mass Index (BMI)

UNIVERSITETET I BERGEN Det matematisk-naturvitenskapelige fakultet

Avdeling for ingeniørutdanning Institutt for teknologi

Forelesning inf Java 5

Forelesning inf Java 5

Transkript:

INF1010 våren 2017 Onsdag 25. januar Litt om unntak i Java Stein Gjessing

Nytt tema: Feilhåndtering (IO: Innlesing/Utskrift) n En metode som kan komme til å gjøre en IO-feil på fil må enten behandle denne selv, eller kaste feilen videre (også i main): public void mittprogmedio( ) throws IOException { < kode som gjør fil-behandling> I Java-biblioteket: Vi skal lære mer om unntak og feilbehandling etter hvert, bare litt her i dag class IOException extends Exception {... (IO: Innlesing/Utskrift) throws er et Java nøkkelord 2

Innlesing av heltall fra fil utskrift på skjerm import java.io.*; import java.util.*; main filinn boolean hasnext() class LesFraFil { Objekt av klassen Scanner public static void main (String [ ] args) throws IOException { Scanner filinn = new Scanner (new File ("minfil.txt )); int tall; int nextint() while(filinn.hasnext()) { tall = filinn.nextint(); System.out.println(tall); Kaster IOunntak til runtimesystemet DETTE GÅR BRA HVIS FILEN BARE INNE- HOLDER HELTALL!! 3

Array indeks utenfor sine grenser int [ ] tallvektor; tallvektor = new int [100]; tallvektor[101] = 17; Seacobra:programmer steing$ javac Test.java Seacobra:programmer steing$ java Test Exception in thread "main" java.lang.arrayindexoutofboundsexception: 101 at Test(Test.java:8) Seacobra:programmer steing$ 4

Du kan behandle unntaket selv: main filut import java.io.*; try { PrintWriter filut = new PrintWriter ( minutfil.txt ); // Utskrift skjer som til skjerm: filut.println( utskrift + 17 ): // For at innholdet på den nye filen skal // bevares må vi til slutt si: Dette objektet skriver på filen minutfil.txt void println() minutfil.txt filut.close( ); catch (FileNotFoundException f) {... 5

Generelt om unntak / feil - behandling i Java n Mye kode kan feile og feilaktige situasjoner (unntak) kan oppstå. n Kode som kan feile kan - og som oftest må - vi legge følgende rundt: Feiler koden blir denne blokken utført med feilobjektet som e peker på som parameter try { <... Kode som kan feile > catch (Exception e) { <... Gjør noe med feilen, prøv å rett opp...> 6

Fem reserverte Java ord n try - Står foran en blokk som er usikker dvs. der det kan oppstå et unntak n catch - Står foran en blokk som behandler et unntak. Har en referanse til et unntaksobjekt som parameter n finally - blir alltid utført (mer senere) n throw - Starter å kaste et unntak throw <en peker til et unntaksobjekt> f.eks throw new Unntak(); n throws - Kaster et unntak videre Brukes i overskriften på en metode som ikke selv vil behandle et unntak n Viktigst bruk: try { <kode som kan feile> catch (Unntaksklasse u) { <behandle unntaket, u peker på et objekt som beskriver unntaket> 7

Fange divisjon med 0 public class TryTest Her tar programmet { seg av hele feilen public static void main ( String [ ] args) { int i=1; for (int j=0; j < 5; j++) try{ i = 10/j; System.out.println("Det gikk OK, i:" + i + ", j:" + j); catch (Exception e) { System.out.println("Feil i uttrykk: "+ e.getmessage( )); snidil> java TryTest Feil i uttrykk: / by zero Det gikk OK, i:10, j:1 Det gikk OK, i:5, j:2 Det gikk OK, i:3, j:3 Det gikk OK, i:2, j:4 snidil> 8

9 Unntak kan oppstå i egen kode try { <KODE SOM KAN FEILE> <Når det skjer noe galt f.eks. at en referanse er null:> throw new Unntaksklasse( );........ catch (Unntaksklasse unt) { < Unntaksbehandling. Dette hoppes over når intet unormalt/galt/feil har hendt > < her fortsetter programmet både etter normal utføring og etter behandling av eventuelle unntak > Nå bestemmer vi selv at et unntak skal oppstå På forhånd har vi deklarert: class Unntaksklasse extends Exception {...

inne i metoden a: Når unntak oppstår i en annen metode (og ikke behandles der) try {.... kall på metoden b x = b ( );.... catch (Unntaksklasse unt) { < Unntaksbehandling. Dette hoppes over når intet unormalt har hendt > < her fortsetter programmet både etter normal utføring og etter behandling av eventuelle unntak> Metoden b feiler kanskje fordi kontrakten for kall på metoden ikke ble oppfylt. int b( ) throws Unntaksklassen { inne i metoden b: b oppdager en feil: throw new Unntaksklasse ( ) ; Normal retur fra b til a: return 17; Unntaksklasse er en klasse som på forhånd er deklarert (egendefinert eller definert i Java-biblioteket) som en subklasse av klassen Exception (se forrige side). 10

Java-bibliotekets klassehierarki for unntak Throwable Vanskelig å gjøre noe med Error RuntimeException Exception IOException VirtualMachineError IOError Må fanges NullPointerException ArithmeticException Unntak i dette subtreet bør fanges 11