De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Verdieping Programmeren in Java - deel 1 college 6 mei 2001.

Verwante presentaties


Presentatie over: "Verdieping Programmeren in Java - deel 1 college 6 mei 2001."— Transcript van de presentatie:

1 Verdieping Programmeren in Java - deel 1 college 6 mei 2001

2 programma 6 mei s 1e uur: hoofdstuk 14 Exception Handling s 2e uur: hoofdstuk 15: Multithreading

3 Hoofdstuk 14 Exception Handling s wat is het? –mechanisme in Java om ‘fouten’ op te vangen s welke fouten? –synchrone fouten buiten de actuele scope in run-time s hoe werkt het? –speciale sleutelwoorden: try - catch - throw

4 Conventioneel vs EH s conventionele foutenopvang: –voordeel: integrale code blijft leesbaar bij weinig fouten –nadeel: code ‘vervuiling’ wanneer vele fouten opgevangen moeten worden s exception handling: –voordeel: integrale code blijft leesbaar bij veel fouten –nadeel: apart mechanisme nodig

5 Wat is het? s een speciale programmastruktuur voor signaleren (throw) en afhandelen (catch) van fouten –afhandelen: vgl. switch statement, s plus het delegeren van de foutenafhandeling –delegatie aan: exception handler –vergelijkbaar met event handling

6 Wat is het? s gebaseerd op werk van Koening & Stroustrup voor C++ s exceptions in Java zijn objecten s klassenhiërarchie met als topklasse: Throwable

7

8 Throwable subklassen s Error –bv. ivm links, threads, VM –meestal onherstelbaar, worden niet expliciet opgevangen, s RunTimeException –komen in goed programma niet voor s andere klassen: checked exceptions –catch or declare principe

9 checked versus unchecked s checked: compiler controleert s unchecked: mag je zelf controleren s Campione et al.: controversy s Client - Server voorbeeld

10 Deitel: welke fouten? s NIET: asynchrone fouten: –dat zijn storingen van buiten het werkende programma –bv. schijf I/O, netwerkboodschappen, muisevents, toetsenbord, etc. –deze anders oplossen, bv met event luisteraars

11 Deitel: welke fouten? s NIET: synchrone fouten binnen de scope van programmaverwerking –deze conventioneel oplossen in de kode s WEL: synchrone fouten van buiten de scope van verwerking –Software Engineering Observation 14.1 (p.700)

12 Voorbeeld fig. 14.1 (p. 813) s de scope hier is de berekening van de deling van twee ingevoerde getallen –binnen de scope: deling met alle ingevoerde getallen, ook buiten de gevraagde range (speciale tekens?, letters?) –buiten de scope: niet kunnen uitvoeren van de deling door de methode

13 Impliciet opvangen s kleiner voorbeeld Mughal & Rasmussen s opklimmende varianten van opwerpen en afhandelen s voorbeeld 1: default exception handling s ‘upward percolating’ in de call-stack tot aan de JVM is te zien aan de ‘stack- trace’

14

15 Expliciet opvangen s ‘try block’ : plaats waar de fout kan optreden s ‘catch block’ : plaats van opvang van mogelijk opgetreden fouten s ‘exception’ : fouten moeten vooraf gedefinieerd zijn of worden in een klasse

16

17 try - catch s meerdere catch blokken mogelijk s compiler kijkt naar de volgorde s ‘shadowing’ is niet toegestaan

18

19

20 Hoe werkt het? (2) s eventueel afwerken met een ‘finally’ blok, dat altijd wordt uitgevoerd s veel exceptions zijn reeds gedefinieerd in diverse pakketten (zie p. 650 ev.) s klassen van exceptions kun je ook zelf definiëren s EH levert géén ge-optimaliseerde kode

21

22 Eigen exception klasse s subklasse van Exception s instantie van klasse wordt exception object s delegatie kan leiden tot communicatie- probleem, vgl oplossing event handling s evt. informatie meegeven aan dit object s eenvoudig voorbeeld

23

24 Niet opgevangen fouten s zijn er na finally nog exceptions over? s dan breekt de methode af (abort) s en vangt de default exception handler ze op

25

26 Zelf exceptions opwerpen s wanneer: –bij eigen excepties –situaties waarin het systeem niet voorziet s sleutelwoord: ‘throw’ –opgeworpen object moet ‘throwable’ zijn –meestal anoniem object s exceptionslijstje methode: ‘throws’

27

28

29 Throws clausule s checked exceptions: catch or declare principe: –catch: try-catch-finally –declare: throws in methode header s compiler dwingt keuze af s voorbeeld 6

30

31

32 Re-throw s par 14.9: rethrowing an exception s met ‘throw’ doorgeven in plaats van afhandelen s catch blok geeft exception door naar ‘next enclosing try block’ s wanneer zinvol ?

33 Hoe werkt het? (3) s Java: ‘determination model’ i.t.t. ‘resumption model’ of exception handling (p.809) s ook in programma-lus ? s EH nodig in programma-lus?

34 volgende week s tentamen


Download ppt "Verdieping Programmeren in Java - deel 1 college 6 mei 2001."

Verwante presentaties


Ads door Google