Chapter 11: Exception Handling F Exceptions and Exception Types F Claiming Exceptions F Throwing Exceptions F Catching Exceptions F Creating Your Own Exception.

Slides:



Advertisements
Liknande presentationer
Föreläsning 9 Programmeringsteknik och Matlab 2D1312/2D1305
Advertisements

Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
Avlusning Debugger (”avlusare”) Breakpoints Watch.
Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Klassarv och inkapsling
OOP Objekt-orienterad programmering
Metoder i java Det finns två typer av metoder i java
Arv.
Polymorfism.
Programmeringsteknik för K och Media
Programkodens uppbyggnad
1 ITK:P1 Föreläsning 4 Grafiska gränssnitt och händelsehantering DSV Peter Mozelius.
Next previous Introduktion till Java Av Björn Eiderbäck Adress: Rum 1641, 6tr NADA Osquars Backe 2 Tel: OOMPAE 2000.
Alice in Action with Java
i olika programmeringsspråk
Objektorienterad programmering i Java
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Föreläsning 8, kapitel 8 Förbättra strukturen med arv Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael.
Vektorer (klassen Vector) Sortering
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: Trådprogrammering i Java - Avbrott (”interrupts”) - Metoden join() -
Polymorfism.
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Programmering i C# 5. Structer.
Objektorienterad Modellering Programmering och Analys
Arv.
OOP Objekt-orienterad programmering
1. En infrastruktur för programutveckling
PROCESSPROGRAMMERING Föreläsning ‏ Innehåll: Högnivå objekt för trådprogrammering: - Trådgrupper (”Thread pools”)‏ - Exekverare (Executor.
Föreläsning 8 Arv och abstrakta klasser. Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen ( extends.
1 Windows programmering Programmering med Threads Borland C++ Builder 4 Modsoft Ab Kent Westerholm.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Next previous Innehåll Del 1-trådar Del 2-URLer Del 1: Trådar Föreläsning 8.
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 9 Gränssnitt. Super Super kan användas till anrop av en omdefinierad metod Super kan användas till anrop av konstruktorer i superklassen Super.
Föreläsning 10, kapitel 10 Abstrahera mera! Abstrakta klasser och interface Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”,
Föreläsning 4 Klasser Och Objekt.
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
PROCESSPROGRAMMERING Föreläsning 1 ( )‏ Innehåll: Introduktion till paralellprogrammering (“concurrent programming”)‏ Introduktion till parallellprogrammering.
Föreläsning 13 Appletprogram/fristående grafiska program Arv Rita linjer, rektanglar mm Skriva text, byta färg Appletprogram & HTML Grafiska användargränssnitt.
Föreläsning 9 Arv kap 8.1 Interface kap 9.2 Grafiska användargränssnitt (GUI) kap 10.
Programmering i C# Laborationer.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 2 ( )‏ Innehåll:Trådar: - Avbrott (”interrupts”)‏ - Metoden join()‏ Högnivå objekt för.
TILLÄMPAD DATALOGI (TILDA) Övningsgrupp 2 Marcus Hjelm
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
Övning 3. Repetition Metoder class RepetitionMetoder { public static void main(String [] args) double längd = 2.0; double bredd = 1.0; double area =
Programmeringsteknik för K och Media
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
OOP&M - teori1 OOP del III–vecka 15 Mer NetBeans MouseEvent Graphics Threads TIJ Chapter 14 Menus sid Drawing File Dialogs
Föreläsning4 Repetition slingor Metoder. while-sats består av följande delar: 1. while 2. Villkor-sats (condition) 3. uttryck (statement) while-sats int.
1 Föreläsning 6 Repetition på metoder Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
1-1 Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1-1 Programmering 7.5 hp Programmering är... creativ, fascinerande, roligt,
Arv, abstrakta klasser och gränssnitt
OOP&M - teori1 OOPM del II– Föreläsning vecka Mer om ärvning.. Abstrakta klasser/metoder Gränssnitt/Interface klasser.
DA7351 Programmering 1 Undantag Klassen Class Rekursion (extra) Föreläsning 19.
OOP&M - teori1 OOPM del II – Föreläsning vecka Abstrakta klasser/metoder igen Gränssnitt/Interface klasser igen tillämpat.
Föreläsning 3 Väsentliga delar i ett Javaprogram Input i paketet extra
Lab Contact 1  Lab Assistants:  Meng Liu, Group B  Sara Abbaspour, Group A
Gruppövning Applikationsprogramering Klassuppdelning Loose Coupling Model View Controller Inversion of Control Layout med Swing JSplitPane Mouse-over Events.
Föreläsning 3: Booleans, if, switch
Föreläsning 15: Exceptions & lite swing, gränssnitt
Föreläsning 8: Exempel och problemlösning
Föreläsning 12: Exempel och problemlösning
JVM Java Virtual Machine
9 Aktiva objekt och trådar Skansholm kap 13
Presentationens avskrift:

Chapter 11: Exception Handling F Exceptions and Exception Types F Claiming Exceptions F Throwing Exceptions F Catching Exceptions F Creating Your Own Exception Classes  The finally Clause F Cautions When Using Exceptions

Undantag F Under programkörning uppstår det ibland fel, sk exekveringsfel. När ett exekveringsfel inträffar så genereras, kastas, ett undantag, en s.k. exception. Man kan även själv signalera att något olämpligt inträffat genom att kasta ett undantag. F När ett undantag kastas så avbryts exekveringen av programmet. Man kan i detta läge:  Låta bli att ta hand om det undantag som genererats. I detta fall avbryts programkörningen (tråden i vilken undantaget inträffat) och systemet skriver ut dumpning av stacken.  Ta hand om undantaget, dvs. fånga undantaget. I detta fall så vidtar man lämpliga åtgärder och låter därefter programmet fortsätta exekvera.

Undantagklasser F Throwable F ErrorException F Diverse kontrollerade RuntimeException, undantagsklasser okontrollerade undantagsklasser F Om man definierar egna undantag så ska de använda Exception som basklass: F public class RitException extends Exception { public RitException() {} public RitException(String meddelande) { super(meddelande); } } F Klassen RitException kommer att tillhöra de kontrollerade undantagen.

Exceptions and Exception Types

Att kasta undantag F Man kan kasta undantag vid behov. Man gör detta med throw-satsen: F if(label==null) throw new NullPointerException(”label är null”); F if(x getSize().width || y getSize().height) F throw new RitException(”Utanför fönstret”); F En metod som kastar ett undantag måste deklarera detta i en undantagslista om det är ett kontrollerat undantag. F public void ritaFigur(int x, int y) throws RitException { F if(x getSize().width || y getSize().height) F throw new RitException(”Utanför fönstret”); F else { F // figur ritas F }

Kontrollerade/okontrollerade undantag F De undantag som är kontrollerade måste hanteras i programmet. Man kan göra det på två sätt:  Fånga undantaget i en try-sats  Deklarera att metoden där undantaget äger rum genererar undantaget. Man gör det i en händelselista. public void enMetod() throws U1,U2 {…}  Exempel på kontrollerade undantag är: ClassNotFoundException och IOException F De undantag som är okontrollerade kan hanteras på två sätt:  Man fångar undantaget i en try-sats  Man gör ingenting. I detta fall avslutas programmet.  Exempel på okontrollerade undantag är: ArithmeticException, IndexOutOfBoundsException och NullPointerException

Att fånga undantag F Man fångar undantag med en try-sats. Den är på formen F try { // Satser som man vill bevaka } catch(Exception1 e1) { // Felhanterare. Kod som tar hand om undantag av typen Exception1 } catch(Exception2 e2) { // Felhanterare. Kod som tar hand om undantag av typen Exception2 } : finally { // Kod som alltid utförs. finally-delen behöver ej vara med } F Efter catch anger man en Exception-klass. Om undantaget som kastats matchar angiven klass (undantaget samma klass eller subklass) så utförs koden i blocket som tillhör catch-delen. F Högst ett catch-block utförs. Dock utförs alltid ett finally-block. Även om inget undantag finns att fånga.

Meddelande om Exception Undantag1Evig F public class Undantag1 { F public Undantag1() { F int täljare = 100,nämnare,kvot; F String strNämnare; F System.out.print("Ange nämnare: "); F strNämnare = Input.readLine(); F nämnare = Integer.parseInt(strNämnare); F kvot = täljare/nämnare; F System.out.println(täljare+"/"+nämnare+" = "+kvot); F } F F public static void main(String[] args) { F new Evig(); F new Undantag1(); F }

Try-sats, körning utan fel Undantag2 F public class Undantag2 { F public Undantag2() { F int täljare = 100,nämnare=100,kvot=100; F String strNämnare; F System.out.print("Ange nämnare: "); F strNämnare = Input.readLine(); F try { F nämnare = Integer.parseInt(strNämnare); F kvot = täljare/nämnare; F } F catch(NumberFormatException e1) { F System.out.println(e1); F } F catch(ArithmeticException e2) { // Avmarkera denna F System.out.println(e2); F } F finally { F System.out.println("Hit kommer man alltid"); F } F System.out.println(täljare+"/"+nämnare+" = "+kvot); F } public static void main(String[] args) { F new Evig(); F new Undantag2(); F }

Example Catching Exceptions  Objective: Write a program to test the new Rational class. TestRationalException Run

Undantag exempel F Ex7 Ex7 F Ex5 Ex5 F Ex6 Ex6 F Ex3 Ex3 F Ex4 Ex4 F Ex1 Ex1 F Ex2 Ex2

Creating Your Own Exception Classes Using Exceptions in Applets F Objective: An applet for account transactions that displays account ID and balance and performs deposits and withdrawals. For each transaction, a message indicates success or failure of the transaction, and reports any reason for failure. AccountApplet Run Applet Viewer InsufficientFundExceptionNegativeAmountException Account

Chapter 12: Multithreading  The Thread class  The Runnable Interface F Thread States F Thread Priority F Thread Groups F Synchronization

Threads Concept Multiple threads on multiple CPUs Multiple threads sharing a single CPU

Thread States

Trådar F I ett program vill man ofta låta flera aktiviteter pågå parallellt. Detta löser man med hjälp av trådar. F Ett par fall som lämpar sig för att utföras i separat tråd är:  animeringar eller andra processorkrävande / tidskrävande processer. För att undvika att låsa programmet låter man dessa utföras i en separat tråd. Om man låser upp händelsehanteringen blir programmen riktigt trista.  aktiviteter som går långsamt varvid processorn inte utnyttjas fullt ut, t.ex. inläsning av bilder över nätet eller inmatning från användare.

Trådar F I java skapar man nya trådar med klassen Thread. Man kan använda ett av följande sätt:  skriva en subklass till klassen Thread. Exekvering av tråden sker med anrop till metoden start() och metoden run() ska överlagras.  implementera gränssnittet Runnable. Man har en instansvariabel av typen Thread och man skaffar ett Thread-objekt med Thread thread = new Thread(this); Tråden startas med anrop till start() och metoden run() ska finnas i klassen. Denna metod går dessutom utmärkt att kombinera med grafiska komponenter vilket gör den till den vanliga. public interface Runnable { public abstract void run(); }

Thread Constructors and Methods F Thread() Creates a runnable object. F void run() Invoked by the Java runtime system to execute the thread. You must override this method and provide the code you want your thread to execute. F void start() Starts the thread, which causes the run() method to be invoked. Called by the runnable object in the client class.

Thread Constructors and Methods, cont. F void stop() Stops the thread. (deprecated in JDK 1.2)  void suspend() (deprecated in JDK 1.2) Suspends the thread. Use the resume() method to resume.  void resume() (deprecated in JDK 1.2) Resumes the thread suspended with the suspend() method. F static void sleep(long millis) throws InterruptedException Puts the runnable object to sleep for a specified time in milliseconds.

Thread Constructors and Methods, cont. F void interrupt() Interrupts the running thread. F static boolean interrupted() Tests to see whether the current thread has been interrupted. F boolean isAlive() Tests to see whether the thread is currently running. F void setPriority(int p) Sets priority p for this thread.

Tråd - arv av Thread  När man skriver en subklass till Thread så behöver man endast överlagra metoden public void run() Koden i run utgör själva tråden. Genom att anropa start-metoden startas exekveringen i run. F public class Counter1 extends Thread { F private int räknare=0; F public Counter1() { F start(); F } F public void run() { F while(true) { F System.out.println(räknare); F try { F Thread.sleep(1000);// pausa en sekund F } F catch(InterruptedException e) {} F räknare++; F } Counter1TestCounter1

Example Using the Thread Class F Objective: Create and run three threads: –The first thread prints the letter a 100 times. –The second thread prints the letter b 100 times. –The third thread prints the integers 1 through 100. TestThreads Run

Tråd - gränssnittet Runnable F När man implementerar gränssnittet Runnable så behöver man en instansvariabel av typen Thread. Man skapar en instans av Thread med konstruktorn F public Thread(Runnable klassMedRunMetod)  Tråden startas med anrop till trådens start-metod. Vidare måste man skriva metoden public void run() Det är koden i run som exekveras vid anrop av start(). F public class Counter2 implements Runnable { F private int räknare=0; F private Thread aktivitet = new Thread(this); F F public Counter2() { F aktivitet.start(); F } F public void run() { F while(true) { F : F } Counter2

Implementing the Runnable Interface Sketch class MyApplet extends Applet implements Runnable { private Thread timer = null; public void init() { timer = new Thread(this); timer.start(); }... public void run() {... } }

Implementing the Runnable Interface in an Applet F Objective: Simulate a running clock by using a separate thread to repaint the clock. Run Applet Viewer

Thread Priority  Each thread is assigned a default priority of Thread.NORM_PRIORITY. You can reset the priority using setPriority(int priority).  Some constants for priorities include Thread.MIN_PRIORITY Thread.MAX_PRIORITY Thread.NORM_PRIORITY

Tråd i grafiskt program F Genom att  implementera gränssnittet Runnable  använda inre klass och ärva Thread  kan man använda trådar när man jobbar med grafiska applikationer, applets eller grafiska komponenter (eller vid andra former av arv) F public class BlinkButton1 extends Button { F Aktivitet aktivitet = new Aktivitet(); F private class Aktivitet extends Thread { F // implementering av run-metod F } F public class BlinkButton2 extends Button implements Runnable { F private Thread aktivitet = new Thread(this); F // implementering av run-metod F } BlinkButton1BlinkButton2TestBBRun

Counter i grafiskt program F Man kan låta räknaren visa sig i ett grafiskt program. Om det grafiska programmet implementerar gränssnittet Skrivbar: F interface Skrivbar { public void skriv(int räknare); } F och implementerar metoden skriv på så sätt att värdet i räknare visas så är det klart. u public void skriv(int tal) { räknare.setText(String.valueOf(tal)); } F class Counter4 extends Thread { F private int räknare=0; F private Skrivbar obj; F public Counter4(Skrivbar where) { F obj = where; F start(); F } F public void run() { F while(true) { F obj.skriv(räknare); F : F } SkrivbarCounter4GrafiskThreadRun

Controlling a Group of Clocks F Objective: Using threads to control a group of clocks. Run