Lecture overview -- Keyboard shortcut: 'u'  Previous page: Kontrakter og undtagelser -- Keyboard shortcut: 'p'  Next page: Exceptionhandling i en Eiffel routine -- Keyboard shortcut: 'n'  Lecture notes - all slides and notes together  slide -- Keyboard shortcut: 't'  Help page about these notes  Alphabetic index  Course home  Play sound for this page -- Keyboard shortcut: 'y'  Page 25 : 26
Forelæsningsnoter i Objekt-orienteret Programmering
Undtagelseshåndtering
En operation kan lykkes eller fejle

Når vi arbejder med metoder som er specificeret med pre- og postbetingelser har vi et godt grundlag til at definere success og fiasko. Vi vil benytte ordene hhv. 'at operationen lykkes' og 'operationen fejler'

En operation lykkes hvis den efterlader programmet i en tilstand der opfylder postbetingelsen og klassens invariant

En operation siges at fejle hvis den ikke lykkes

Vi siger at en operation lykkes hvis den opfylder kontrakten, når operationen er kørt til ende. At opfylde kontrakten i denne situation betyder at postbetingelsen skal være sand, samt at klasseinvarianten i den klasse, hvor metoden befinder sig, skal være sand

Som en naturlig modsætning siger vi at operationen fejler hvis den ikke lykkes

Hvis en prebetingelse af en metode m brydes (bliver falsk) fejler den metode, som har kaldt m

  • Kun to muligheder

    • En operation lykkes - kontrakten er overholdt

      • Programmet befinder sig i en normalsituation

    • En operation fejler - kontrakten er brudt

      • Programmet befinder sig i en undtagelsessituation

      • Exceptionhandling (langs kæden af kald) kan bringe programmet tilbage i normalsituationen

En operation med en ikke-trivielt opfyldt postbetingelse uden exception handling svarer til en metode i Java som erklærer at den kan kaste exceptions

Hvis en metode har en postbetingelse der ikke blot er 'true' betyder det, at under visse omstændigheder vil postbetingelsen kunne brydes. Dette forårsager en exception, som måske skal håndteres uden for metoden. Metoderne på den dynamiske kæde af kald får chancen for at håndtere undtagelsen inden programmet evt. stopper sin udførelse.