Slide 1Programmatuur voor real-time controleYolande Berbers RTPReal-Time Programmatuur hoofdstuk 6: uitzonderingen en de behandeling van uitzonderingen.

Slides:



Advertisements
Verwante presentaties
De zin en onzin van escrow
Advertisements

Sudoku puzzels: hoe los je ze op en hoe maak je ze?
De elektronische verzamelaanvraag Ruben Fontaine Markt- en Inkomensbeheer – dienst Aangiftes.
Doublet deel 1 – de basis.
‘SMS’ Studeren met Succes deel 1
28 juni 2009 Paëllanamiddag 1 Paëllanamiddag 28 juni 2009 Voorbereiding vrijdagavond (Loopt automatisch - 7 seconden)
Programmeren met Alice
7 april 2013 Zoetermeer 1. 1Korinthe Maar, zal iemand zeggen, hoe worden de doden opgewekt? En met wat voor lichaam komen zij? 2.
Hoofdstuk 8: Recursie.
Ronde (Sport & Spel) Quiz Night !
Start.
Objecten Hoofdstuk 6 Hoofdstuk 6 Hoofdstuk 6 1.
F. Rubben NI Lookout 1 06/RIS/05 - NI Lookout VTI Brugge F. Rubben, ing.
De implementatie van de UIML standaard in UIML.NET Ingo Berben Eindwerk voorgedragen tot het behalen van de graad van bachelor in de informatica/ICT/kennistechnologie.

Instructie Programmeren Debuggen 5JJ70. Debuggen: Wat is het probleem Je programma compileert, maar werkt niet zoals verwacht, wat nu? Vraag je af: wat.
Hoofdstuk 6: Controle structuren
Inleiding Informatica Prof. Dr. O. De Troyer Hoofdstuk 10: Omgaan met problemen.
VHDL Peter Slaets KHLim Functies en procedures Functies –type conversie functies »bit vector to integer en omgekeerd –verkorte componenten met maar 1 output.
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen College 5.
Les 2 Basisbouwstenen (deel 1)
Parallelle Algoritmen String matching. 1 Beter algoritme patroonanalyse Bottleneck in eenvoudig algoritme: WITNESS(j) (j = kandidaat in eerste i-blok)
Oefeningen F-toetsen ANOVA.
1/1/ / faculty of Computer Science eindhoven university of technology 5B040:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 7(1): Flow of.
Verdieping Programmeren in Java - deel 1 college 6 mei 2001.
TUDelft Knowledge Based Systems Group Zuidplantsoen BZ Delft, The Netherlands Caspar Treijtel Multi-agent Stratego.
1 Voorwaarden hergebruik Modulair ontwerp Low coupling High cohesion.
Frank Stalpers en Ad Baars
MICPRG Les 11 Microcontroller Programmeren in C. 112 Datastructuren in C Werkgeheugen (PC en microcontroller): Statische datastructuren (vaste grootte):
Slide 1Programmatuur voor real-time controleYolande Berbers RTPReal-Time Programmatuur laag-niveau programmeren uit hoofdstuk 15 van Alan Burns, Andy Wellings,
JAVA -- H51 CONSTRUCTOR –- COPY-CONSTRUCTOR 1Constructor: Dezelfde naam als de klasse Wordt uitgevoerd d.m.v. new Initialisatie van de (private) attributen.
Visual Basic.
User management voor ondernemingen en organisaties
2009 Tevredenheidsenquête Resultaten Opleidingsinstellingen.
ribwis1 Toegepaste wiskunde Lesweek 01 – Deel B
Hoofdstuk 3: Inleiding tot Java Applets
P. 1 Vakgroep Informatietechnologie Structuur Deel II C++ Classes Namespaces Type casting Reference types Constructors en Destructors Memory Management.
LauwersCollege Buitenpost Java Applet programma dat op een website zichtbaar is Java Application programma dat zelfstandig werkt Javascript Scripttaal.
Event Handling in Embedded Systems.  Wat is een event?  Welke events zijn het meest “time-critical”?  Welke toestand wordt door de CPU opgeslagen?
Van Valckenborgh Dirk Februari Definitie “optie op aandelen” : Recht / Verplichting om een standaardhoeveelheid aandelen te kopen (call-optie –
OO Analyse in de praktijk OO Analyse in de praktijk V Enkele Design Patterns.
Herhaling Java-programmatie en geautomatiseerd testen (vervolg)
1 Syntax JavaLogo. 2 Hoofdstuk 1 Tekenen in Java.
ECHT ONGELOOFLIJK. Lees alle getallen. langzaam en rij voor rij
17/08/2014 | pag. 1 Fractale en Wavelet Beeldcompressie Les 5.
17/08/2014 | pag. 1 Fractale en Wavelet Beeldcompressie Les 3.
De financiële functie: Integrale bedrijfsanalyse©
1 Amsterdam, april 2005 Drs. Frits Spangenberg Rotary Extern imago.
Slide 1Programmatuur voor real-time controleYolande Berbers RTPReal-Time Programmatuur hoofdstuk 11: controle van de hulpmiddelen.
Slide 1Programmatuur voor real-time controleYolande Berbers RTPReal-Time Programmatuur hoofdstuk 4: het beheersen van complexiteit: programming in the.
1 Zie ook identiteit.pdf willen denkenvoelen 5 Zie ook identiteit.pdf.
12 sept 2013 Bodegraven 1. 2  vooraf lezen: 1Kor.7:12 t/m 24  indeling 1Korinthe 7  1 t/m 9: over het huwelijk  10 t/m 16: over echtscheiding  16.
13 november 2014 Bodegraven 1. 2 de vorige keer: 1Kor.15:29-34 indien er geen doden opgewekt worden...  vs 29: waarom dopen?  vs.30-32: waarom doodsgevaren.
CONTROLESTRUCTUREN (DEEL 1)
Tircms02-p les 3 Functies Strings Structuren. Functies 1. main() 2. { int k; k = 10 ; printf(“%d\n”,fac(k)); } 3. int fac(n) int n; 4. { int f; f= 1;
23 mei 2013 Bodegraven vanaf hoofdstuk 6: hoofdst.1: de wijsheid van de wereld hoofdst.2: de wijsheid van God hoofdst.3: Gods akker en Gods bouwwerk.
Tircms03-p les 4 Klassen. Abstracte datatypes in C struct stack { char info[100]; int top; }; void reset(stack *s) { s->top = -1; } void push(stack *s,
Cegeka & TenForce Ronde tafel 17/06/2014 Doelstellingenmanagement VO.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag top-down decompositie Opdrachten:
Polymorphisme en Interfaces: inleiding
Instructie Programmeren Task 7
Java Objectgeoriënteerd Programmeren in Java met BlueJ
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 7 Polymorfie en overerving © 2014, Gertjan Laan, versie 2.
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 8: Gebruikersinterface © 2014, Gertjan Laan, versie 2.
Java & het Web Programma: Contexts Listeners Scope/Attributes Thread safety.
Codetuts Academy Les 6 Module 2a Php Fundamentals 1.
Les 3 - Operators Workshop Php Basic. ICT Academy Php Basic Content Operators Wiskundig Toewijzing Vergelijking.
Loops en errors Array's Random try catch for loop while loop do while loop.
Java voor beginners Doel: Een spel maken in LWJGL Door: Jim van Leeuwen.
Objectgeoriënteerd Programmeren (2)
Transcript van de presentatie:

slide 1Programmatuur voor real-time controleYolande Berbers RTPReal-Time Programmatuur hoofdstuk 6: uitzonderingen en de behandeling van uitzonderingen

RTP slide 2Programmatuur voor real-time controleYolande Berbers uitzonderingen n behandelen van uitzondering: u dynamische redundantie (= wordt uitgevoerd enkel als dwaling opgemerkt wordt) u vorm van voorwaarts herstel: men probeert vanuit de situatie met dwaling een goed functionerende toestand te bereiken u kan ook gebruikt (misbruikt) worden voor achterwaarts herstel n terminologie u uitzondering: het optreden van een dwaling (in het Engels: exception) u een uitzondering signaleren (of werpen): de oproeper van een operatie attent maken op de uitzondering (in het Engels: raising, signalling, throwing) u behandeling (of opvang) v. uitzondering: actie die oproeper neemt

RTP slide 3Programmatuur voor real-time controleYolande Berbers vereisten voor uitzonderingsmechanisme n V1. eenvoudig en gemakkelijk te gebruiken n V2. redundante code mag de normale code niet moeilijk te begrijpen maken u geen mengeling v. behandelen v. uitzonderingen met normale code n V3. enkel run-time overhead bij optreden van uitzondering u soms compromis tussen snel herstel en overhead bij normale gang n V4. uniforme behandeling van uitzonderingen gesignaleerd door omgeving en door toepassing zelf u vb overflow en waarde buiten beperking op zelfde manier behandelen n V5. moet mogelijk maken om herstelacties te programmeren

RTP slide 4Programmatuur voor real-time controleYolande Berbers n routine geeft ongewone waarde of fout-code terug u wordt veel gedaan in C (vaak test op -1) u voldoet aan V1 (eenvoud) en V5 (behandeling van uitzondering) u voldoet niet aan V2, V3 en V4: de code staat in de weg, er is telkens overhead, mechanisme laat niet toe fouten door omgeving op te vangen if (function_call (parameters) == AN_ERROR) { -- error handling code } else { -- normal code } behandeling van uitzonderingen in oudere programmeertalen

RTP slide 5Programmatuur voor real-time controleYolande Berbers n verplichte sprong u vooral gebruikt in assembler talen u voldoet niet aan V2, V3 en V4 n niet-lokale goto u goto wordt beschouwd als heel slechte programmeringstechniek u voldoet niet aan V1, V2 en V4 n gebruik van een variabele voor een foutbehandelings-routine u iets beter als niet-lokale goto u voldoet ook niet aan V1, V2 en V4 è voor rest van hoofdstuk: behandeling van uitzonderingen in moderne programmeertalen (met hiervoor taalconstructies) behandeling van uitzonderingen in oudere programmeertalen

RTP slide 6Programmatuur voor real-time controleYolande Berbers uitzonderingen en hun voorstelling n dwaling-detectie kan gebeuren u door omgeving u door toepassing n signaleren van uitzondering kan gebeuren u synchroon (direct bij mislukken operatie) u asynchroon (een tijdje later, eventueel door een ander proces) è 4 mogelijke klassen van uitzonderingen (zie volgende transparant)

RTP slide 7Programmatuur voor real-time controleYolande Berbers uitzonderingen en hun voorstelling n 1. detectie door omgeving en synchrone verwittiging u bv buiten het bereik van een rij gaan (detectie door run-time) u bv deling door 0 (detectie door besturingsysteem) n 2. detectie door toepassing en synchrone verwittiging u bv niet voldoen aan een assertie n 3. detectie door omgeving en asynchrone verwittiging u bv stroomonderbreking van een meettoestel n 4. detectie door toepassing en asynchrone verwittiging u bv proces A merkt dat proces B niet meer reageert 2 asynchrone uitzonderingen: ook signalen genoemd, zie Hdst 11 2 in Hdst 6 behandelen we verder enkel de synchrone verwittiging

RTP slide 8Programmatuur voor real-time controleYolande Berbers intermezzo: besturingssysteem en run time systeem n een programma draait bovenop een run-time systeem (soms afgekort als RTS) n het run-time systeem draait bovenop het besturingssysteem hardware besturingssysteem run-time systeem code gegenereerd door compiler programma

RTP slide 9Programmatuur voor real-time controleYolande Berbers uitzonderingen en hun voorstelling n 2 modellen voor declaratie van uitzonderingen u Ada: een naam die als constante gedeclareerd is u Java: object van bepaald type, al dan niet expliciet gedeclareerd l OO-kijk (alles is een object, ook een uitzondering) package Standard is -- module van runtime systeem (RTS) …. -- uitzonderingen door RTS gedetecteerd Constraint_Error: exception; Program_Error: exception; Storage_Error: exception; Tasking_Error: exception; …. end Standard;

RTP slide 10Programmatuur voor real-time controleYolande Berbers het domein van een exception handler n handler = stuk code die uitzondering opvangt n in een programma kunnen meerdere handlers voorzien worden voor eenzelfde uitzondering u bv deling door 0 kan op meerdere plaatsen opgevangen worden n met elke handler is een domein geassocieerd u = stuk programma waarvoor opvangcode verantwoordelijk is u als fout in domein optreedt wordt bijhorende handler geroepen n precisie van domein u bepaalt hoe goed een fout kan gelokaliseerd worden

RTP slide 11Programmatuur voor real-time controleYolande Berbers het domein van een exception handler n in blok-gestructureerd programmeertalen: domein is blok, procedure, functie u bv in Ada: u nadeel: granulariteit is soms te grof (zie voorbeeld 2 slides verder) declare subtype Temperature is Integer range ; begin -- lees temperatuurmeter en bereken zijn waarde exception -- handler voor Constraint_Error end ;

RTP slide 12Programmatuur voor real-time controleYolande Berbers het domein van een exception handler n in sommige andere talen: domein expliciet gespecifieerd u men noemt het stuk code ‘bewaakt’ (guarded) u bv in Java u nadeel: past minder samen met natuurlijke structuur van code try { // stuk programma dat een uitzondering zou kunnen veroorzaken } catch ( ExceptionType e) { // code voor het opvangen van de uitzondering }

RTP slide 13Programmatuur voor real-time controleYolande Berbers het domein van een exception handler n voorbeeld van probleem door te weinig precisie u handler weet niet welke instructie een beperkingsfout veroorzaakt heeft declare subtype Temperature is Integer range ; subtype Pressure is Integer range ; subtype Flow is Integer range ; begin -- lees temperatuurmeter en bereken zijn waarde -- lees drukmeter en bereken zijn waarde -- lees doorvoermeter en bereken zijn waarde -- pas temperatuur, druk en doorvoer aan volgens specificaties exception -- handler voor Constraint_Error end ;

RTP slide 14Programmatuur voor real-time controleYolande Berbers het domein van een exception handler n zeer lange en weinig elegante oplossing n in Java: exception is een object dat informatie kan bevatten, zodat handler meer kan weten over fout declare subtype Temperature is Integer range ; subtype Pressure is Integer range ; begin -- lees temperatuurmeter en bereken zijn waarde exception -- handler voor Constraint_Error end ; begin -- lees drukmeter en bereken zijn waarde exception -- handler voor Constraint_Error end ; -- pas temperatuur en druk aan volgens specificaties exception -- handler voor Constraint_Error end ;

RTP slide 15Programmatuur voor real-time controleYolande Berbers propagatie van fouten n wat als er geen handler voorzien is voor een fout u 2 mogelijke aanpakken l compiler signaleert dit s compiler moet testen of alle blokken alle fouten opvangen s alle fouten overal opvangen zou heel veel code vragen s ook weet een procedure vaak niet hoe een fout moet behandeld worden: oproeper van de procedure weet dat l fout propageren naar oproepende blokken s 2 modellen –resumption model –termination model s speciale problemen bij meerdere processen: H 10

RTP slide 16Programmatuur voor real-time controleYolande Berbers propagatie van fouten n resumption model: u stuk programma waar fout optrad wordt hervat (op plaats waar fout optrad) na opvang van de fout u ‘oproeper’ kan verder uitvoeren alsof niets gebeurde n termination model u stuk programma waar fout optrad wordt niet hervat u controle gaat naar oproepend of omsluitend blok n hybrid model u handler beslist voor stoppen of hervatten v code waarin fout optrad n volgende slides: tekening bij resumption en termination model

RTP slide 17Programmatuur voor real-time controleYolande Berbers propagatie van fouten: resumption Q PRQ HrHq 3 uitzondering r treedt op in R maar wordt niet opgevangen in R: propagatie naar oproeper waar wel een handler voorzien is 4 tijdens het behandelen van uitzondering r treedt uitzondering q op die niet lokaal opgevangen wordt: propagatie naar Q 5 vanuit Hq gaat het verder in Hr 1 P roept Q op 2 Q roept R op 6 vanuit Hr gaat het verder in R

RTP slide 18Programmatuur voor real-time controleYolande Berbers propagatie van fouten: resumption n mogelijke vergelijking: impliciet opgeroepen procedure n probleem met resumption model u vaak moeilijk om het probleem helemaal op te lossen zodat je ongestoord kunt verder gaan met de volgende instructie u implementatie is moeilijk n mogelijk alternatief u heruitvoeren van hele blok waar handler mee geassocieerd is

RTP slide 19Programmatuur voor real-time controleYolande Berbers propagatie van fouten: termination n model u stuk programma waar fout optrad wordt niet hervat u controle gaat naar oproepend of omsluitend blok u manier waarop (conditie) controle terugkeert: l normaal (de uitzondering is volledig opgelost) l uitzondering (de uitzondering wordt doorgegeven) n voorbeelden u voorbeeld met blok: volgende transparant u voorbeeld met procedures: twee transparanten verder

RTP slide 20Programmatuur voor real-time controleYolande Berbers propagatie van fouten: termination declare subtype Temperature is Integer range ; begin …. begin -- lees temperatuurmeter en bereken zijn waarde exception -- handler H1 voor Constraint_Error end ; -- code uitgevoerd bij normaal uittreden blok of na -- behandeling van uitzondering in handler H1 exception -- handler voor andere soorten uitzonderingen end ;

RTP slide 21Programmatuur voor real-time controleYolande Berbers propagatie van fouten: termination P Q Hq 2 P roept Q op 4 uitzondering q treedt op

RTP slide 22Programmatuur voor real-time controleYolande Berbers propagatie van fouten: termination P R Q Hr 2 P roept Q op 4 Q roept R op uitzondering r treedt op

RTP slide 23Programmatuur voor real-time controleYolande Berbers uitzonderingen en besturingssysteem n meeste programma’s worden uitgevoerd boven een besturingssysteem u deze systemen ontdekken sommige synchrone fouten l bv illegale instructie l deling door 0 l foutief adres (memory violation) u mogelijke behandeling l stoppen van proces (meest voorkomend) l verwittigen van proces (bv via signals in POSIX) s proces kan handler voorzien s volgt het resumption model s als dit voorkomt binnen een taal met termination model: run-time systeem moet dit vertalen naar termination model

RTP slide 24Programmatuur voor real-time controleYolande Berbers gebruik van uitzonderingen in Ada n Ada model u expliciete declaratie van uitzonderingen u termination model u propagatie van onbehandelde uitzonderingen u beperkte vorm van parameters (dit bekijken wij niet in detail) n declaratie van een uitzondering u naam_uitzondering: exception; u of via package Ada.Exceptions (dit bekijken wij niet in detail) u zoals variabelen hebben ook uitzonderingen hun zichtbaarheid (scope) u enkele standaard uitzonderingen zijn door de taal gedefinieerd en hebben zichtbaarheid over het hele programma l bv Constraint_Error, Storage_error

RTP slide 25Programmatuur voor real-time controleYolande Berbers gebruik van uitzonderingen in Ada n signaleren van een uitzondering u een toepassing kan ook expliciet een uitzondering signaleren u raise instructie u een else-gedeelte is niet nodig want de controle komt niet terug begin …. -- instructies die iets lezen van een randapparaat if IO_Device_In_Error then raise IO_Error; end if ; …. end ;

RTP slide 26Programmatuur voor real-time controleYolande Berbers gebruik van uitzonderingen in Ada n behandeling van uitzonderingen u elk blok (en dus ook elke routine) kan optioneel een aantal exception handlers bevatten u ze worden aan het einde van het blok geschreven u ze gebruiken sleutelwoord when om uitzondering aan te duiden u ze kunnen de uitzondering toekennen aan een variabele zodat hierop later kan getest worden u voorbeeld op volgende transparant

RTP slide 27Programmatuur voor real-time controleYolande Berbers gebruik van uitzonderingen in Ada declare sensor_High, Sensor_Low, Sensor_Dead : exception; -- andere declaraties begin -- instructies die boven-gedeclareerde uitzonderingen -- kunnen veroorzaken exception when E: Sensor_High | Sensor_Low => -- neem een herstellende actie -- E bevat eigenlijke uitzondering (Sensor_High of Sensor_Low) -- waarop getest kan worden when Sensor_Dead => -- luid een alarm end;

RTP slide 28Programmatuur voor real-time controleYolande Berbers gebruik van uitzonderingen in Ada n when others : om niet alle namen te moeten opnoemen n wordt vaak gebruikt als laatste deel van exception-blok declare sensor_High, Sensor_Low, Sensor_Dead : exception; begin -- instructies die gedeclareerde uitzonderingen kunnen veroorzaken exception when Sensor_High | Sensor_Low => -- neem een herstellende actie when E: others => Put (Exception_Name(E)); Put_Line (“werd veroorzaakt”) -- luid een alarm end;

RTP slide 29Programmatuur voor real-time controleYolande Berbers gebruik van uitzonderingen in Ada n uitzondering die veroorzaakt wordt in een handler u kan niet behandeld worden in dat blok van handlers u wordt automatisch direct naar oproepend blok gepropageerd

RTP slide 30Programmatuur voor real-time controleYolande Berbers gebruik van uitzonderingen in Ada: propagatie n geen handler voorzien in een blok: uitzondering wordt ‘naar boven’ gepropageerd n bij packages: handler in initialisatie-blok behandelen niet de uitzonderingen van de verschillende routines n voorbeeld van package package Temperature_Control is subtype Temperature is Integer range : Sensor_Dead, Actuator_Dead : exception ; procedure Set_Temperature (New_Temp : in Temperature); function Read_Temperature return Temperature; end Temperature_Control;

package body Temperature_Control is procedure Set_Temperature (New_Temp : in Temperature) is begin -- zet de nieuwe temperatuur if No_Response then raise Acturator_Dead; end if; end Set_Temperature; function Read_Temperature return Temperature is begin -- lees de sensor if No_Response then raise Sensor_Dead; end if; -- bereken de temperatuur return Reading; exception when Constraint_Error => -- neem een herstellende actie end Set_Temperature; begin -- initalialiseer de package Set_Temperature(Initial_Reading); exception when Actuator_Dead => -- neem een herstellende actie end Temperature_Control;

RTP slide 32Programmatuur voor real-time controleYolande Berbers gebruik van uitzonderingen in Ada: laatste wensen n afhandeling van een fout: u soms lokale oplossing tov blok waar fout gebeurde u maar ook oplossing die afhankelijk is van oproeper van het blok l fout doorgeven naar boven: met de instructie raise n 2 voorbeelden u toekennen van hulpmiddelen l indien fout optreedt wil men hulpmiddelen weer vrijgeven l en de fout doorgeven aan oproeper u iets veranderen aan positie flappen van vleugels van vliegtuig l indien fout: tenminste de vleugels weer symmetrisch zetten l en de fout doorgeven aan oproeper

RTP slide 33Programmatuur voor real-time controleYolande Berbers gebruik van uitzonderingen in Ada: laatste wensen subtype Devices is Integer range 0.. Max; procedure Allocate (Number : in Devices) is begin -- toewijzen (alloceren) van de hulpmiddelen één voor één exception when others => -- dealloceer de reeds toegewezen hulpmiddelen raise -- signaleer de opgetreden uitzondering aan oproeper end Allocate;

RTP slide 34Programmatuur voor real-time controleYolande Berbers gebruik van uitzonderingen in Ada: laatste wensen procedure Wing_Settings (-- relevante parameters) is begin -- wijzig de toestand van de flappen -- een uitzondering kan in deze code optreden exception when others => -- zorg ervoor dat de flappen weer symmetrisch staan raise -- signaleer de opgetreden uitzondering aan oproeper end Wing_Settings ;

RTP slide 35Programmatuur voor real-time controleYolande Berbers gebruik van uitzonderingen in Ada n uitzondering die veroorzaakt wordt tijdens declaratie u wordt gepropageerd naar oproepend blok u niet altijd zo gemakkelijk: speciale gevallen worden hier niet besproken n testen op uitzondering kost tijd u elke test door het run-time systeem vertraagt het programma l bv Constraint_Error: bij elke index in een array wordt getest op het bereik van die index u men kan dit onderdrukken in bepaalde delen van programma l verantwoordelijkheid van programmeur !

RTP slide 36Programmatuur voor real-time controleYolande Berbers gebruik van uitzonderingen in Ada n problemen met behandelen van uitzonderingen in Ada u uitzonderingen en packages l uitzonderingen worden gedeclareerd in de specificatie l niet duidelijk welke routine welke uitzondering kan veroorzaken l gebruiker van package moet bij gebruik van een routine s ofwel iets voorzien voor alle uitzonderingen (eventueel met when others) s ofwel in de body gaan zien wie wat signaleert u parameters kunnen niet doorgegeven worden bij het signaleren l handler weet eigenlijk niet veel, kan niet precies handelen u wanneer uitzonderingen naar boven gepropageerd worden kan de naam uit zichtbaarheid geraken l kan dan enkel via when others opgevangen worden

RTP slide 37Programmatuur voor real-time controleYolande Berbers gebruik van uitzonderingen in Java n Java model u expliciete declaratie van uitzonderingen u termination model u propagatie van onbehandelde uitzonderingen u uitzonderingen geïntegreerd in OO model n declaratie van een uitzondering u uitzonderingen: sub-klassen van java.lang.Throwable u ook in taal gedefinieerde klassen l Error: hiervan zijn afgeleid klassen voor interne fouten en uitputting van middelen (valt meestal niet veel aan te doen) l RunTimeException: bv IndexOutOfBoundException

RTP slide 38Programmatuur voor real-time controleYolande Berbers gebruik van uitzonderingen in Java public class IntegerConstraintError extends Exception { private int lowerRange, upperRange, value; public IntegerConstraintError (int L, int U, int V) { super(); // call constructor on parent class lowerRange = L; upperRange = U; value = V; } public String getMessage() { return (“Integer constraint error: Lower range “ + java.lang.Integer.toString(lowerRange) + “ Upper range” + java.lang.Integer.toString(upperRange) + “ found” + java.lang.Integer.toString(value)); }

RTP slide 39Programmatuur voor real-time controleYolande Berbers gebruik van uitzonderingen in Java public class Temperature { private int T; void check (int value) throws IntegerConstraintError { if (value > 100 || value < 0) { throw new IntegerConstraintError (0, 100, value); } } public Temperature (int initial) throws IntegerConstraintError // constructor { check(initial); T = initial; } public void setValue (int V) throws IntegerConstraintError { check(V); T = V; } public int readValue () { return T; } } n verschil Ada: elke operatie zegt welke uitzondering kan optreden

RTP slide 40Programmatuur voor real-time controleYolande Berbers gebruik van uitzonderingen in Java Temperature T1; … try { T1 = new Temperature(20); … T1.setvalue(80); … } catch (IntegerConstraintError error) { // exception caught, print error message on standard output System.out.println(error.getMessage()); } n handler met parameter v. type T zal een object v. type E opvangen indien u T en E van hetzelfde type zijn u T een superklasse van E is

RTP slide 41Programmatuur voor real-time controleYolande Berbers gebruik van uitzonderingen in Java n iets analoogs als when others in Ada Temperature T1; … try { … } catch (Exception E) { // any exception caught, print error message on standard output System.out.println(E.getMessage()); }

RTP slide 42Programmatuur voor real-time controleYolande Berbers uitzonderingen en C n C biedt geen uitzonderingsmechanisme n kan enigszins nagebootst worden  met de POSIX routines setjmp en longjmp setjmp bewaart de programmastatus, geeft 0 terug longjmp herstelt de prgrammastatus  programma voert verder uit vanaf punt waar setjmp opgeroepen werd  nu geeft setjmp par. van longjmp als waarde terug u is ingewikkeld, zeer moeilijk zo maar te gebruiken (gevaar dat er meer fouten komen dan dat er fouten opgevangen worden !!) u kan gebruikt worden in macro’s die moeilijkheden beetje verbergen l is niet deel v. taal => geen ondersteuning voor goed gebruik !!