1 / 34

Verdieping Programmeren in Java - deel 1

Verdieping Programmeren in Java - deel 1. college 6 mei 2001. programma 6 mei. 1e uur: hoofdstuk 14 Exception Handling 2e uur: hoofdstuk 15: Multithreading. Hoofdstuk 14 Exception Handling. wat is het? mechanisme in Java om ‘fouten’ op te vangen welke fouten?

cate
Download Presentation

Verdieping Programmeren in Java - deel 1

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

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

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

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

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

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

  9. Deitel: welke fouten? • 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

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

  11. Voorbeeld fig. 14.1 (p. 813) • 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

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

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

  14. try - catch • meerdere catch blokken mogelijk • compiler kijkt naar de volgorde • ‘shadowing’ is niet toegestaan

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

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

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

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

  19. Throws clausule • checked exceptions: catch or declare principe: • catch: try-catch-finally • declare: throws in methode header • compiler dwingt keuze af • voorbeeld 6

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

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

  22. volgende week • tentamen

More Related