Øvelse 21 - Exceptions i C sharp
Reflekterende spørgsmål
- Hvad sker der med programmets normale eksekveringsflow, når en exception bliver kastet?
Eksekveringen stopper og hopper hen til der hvor denne exception bliver håndteret, hvis den ikke håndteres så stopper programmet helt.
- Hvad er forskellen på en handled og en uncaught exception?
En handled exception er en som bliver fanget og håndteret. En uncaught exception bliver ikke fanget og systemt stopper derfor med at eksekvere.
- Hvorfor kan det være en fordel, at en exception "larmer"?
Det er en fordel da fejlen dermed bliver opdaget.
- Hvorfor giver exceptions særlig god mening i en constructor?
Det gør det fordi at man ved at stoppe eksekveringen netop sikrer at en entitet ikke oprettes med fejl.
- Hvad kunne konsekvensen være, hvis en constructor accepterede data, der brød objektets invariant?
Så kunne man ende med entiteter/objekter med ugyldige data som ikke passer med ens forretningslogik og som dermed kan ødelægge den.
- Hvornår kunne et forventeligt resultat være mere hensigtsmæssigt end at kaste en exception?
Hvis det ikke bryder med forretningslogikken eller et objekts invariant, så behøves en exception ikke.
- Hvorfor bør en teknisk exception ikke nødvendigvis vises direkte til brugeren?
Fordi den kan indeholde dybe informationer omkring systemet, via det som kaldes en stack trace, som en bruger ikke skal have indsigt i.