Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

GP9, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 11 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.

Lignende præsentationer


Præsentationer af emnet: "GP9, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 11 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder."— Præsentationens transcript:

1 GP9, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 11 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder 9.15. www.itu.dk/courses/GP/E2005 Martin Lillholm

2 GP9, Martin Lillholm 2 Sidste gang Rekursion Hvordan gik opgaven ?

3 GP9, Martin Lillholm 3 Denne gang Undtagelser (exceptions) Vi springer afprøvning over Rekursion – eventuelle spørgsmål og udvalgte emner

4 GP9, Martin Lillholm 4 Næste gang Sidste kapitel i bogen Opfølgning på prøveeksamen Opfølgning på evaluering Spørgetime – hvornår?

5 GP9, Martin Lillholm 5 Undtagelser (exceptions) – motivation Mulighed for at håndtere ”usædvanlige” omstændigheder – udtagelser Division med nul Tabelindeks uden for 0..n-1 ”Forkert” input ved brug af eksempelvis Scanner klassen En fil findes ikke (I/O) null referencer... Systemundtagelser Programmørdefinerede undtagelser Bør bruges med omtanke!

6 GP9, Martin Lillholm 6 Håndtering af undtagelser Undtagelser kan håndteres –For at undgå at eksempelvis en fejl medfører at programmet går ned Undtagelser kan (i princippet) ignoreres Undtagelser kan håndteres, hvor de opstår Undtagelser kan håndteres andre steder i programmer

7 GP9, Martin Lillholm 7 Undtagelser (uden håndtering) – eksempel Exception in thread "main" java.lang.ArithmeticException: / by zero at Zero.main(Zero.java:17)

8 GP9, Martin Lillholm 8 Undtagelser – hvad sker der ? Når en undtagelse kastes af ”systemet” eller manuelt ophører normal programafvikling –throw expression; (Enten eksplicit eller implicit) Hvor typen af expression er en subtype af Throwable og giver altså et undtagelses objekt v V kan håndteres op igennem kaldhierakiet; i første omgang umiddelbart hvor den kastes; derefter propageres v op igennem kaldhierakiet Eventuelt helt op til ”system”-niveau ( Zero.java ) Metoderne getMessage() og printStackTrace()

9 GP9, Martin Lillholm 9 Undtagelser (med håndtering) – eksempel

10 GP9, Martin Lillholm 10 Undtagelser med håndtering try og catch try {... // code that may throw an exception } catch (ExceptionType excp) {.. // code that handles the exception } catch fanger undtagelser af samme type samt alle subtyper Kommentarer til eksemplet –InputMismatchException vs. Exception –Hvorfor scanIn.nextLine() i catch konstruktionen ? Der kan være mere end en catch -blok – skal dog altid have forskellige typer ( ProductCodes.java side 536 i L&L)

11 GP9, Martin Lillholm 11 try – catch - finally try {... // code that may throw an exception } catch (ExceptionType excp) {.. // code that handles the exception } finally {... // code that’s always executed } catch er en exception handler Hvorfor finally ? Kode der skal udføres unanset om der opstår en undtagelse i try -blokken eller ej. I/O og andre ressourceafhængige opgaver

12 GP9, Martin Lillholm 12 try – catch – finally - opsamling Hvornår bruges try ? Hvornår bruges catch ? Hvornår bruges finally ? Til en try -blok skal der altid være mindt en catch eller en finally – eventuelt begge dele Hvornår bruges throws ?

13 GP9, Martin Lillholm 13 Mere om Undtagelser Checked og unchecked undtagelser –Checked skal håndteres alternativt skal den udløsende metode/konstruktør haves en throws exceptiontype –Kun RunTimeException og heraf afledte undtagelser er unchecked Exception klassehierakiet L&L side 542 Egne undtagelser CreatingExceptions.java L&L side 543 i BlueJ throw Brug kun undtagelser når rent er tale om usædvanlige omstændigheder!

14 GP9, Martin Lillholm 14 Undtagelsespropagering – kaldhieraki Kaldhieraki og propagering (tavlegennemgang) Undtagelser bør altid håndteres på det ”rigtige” niveau eventuelt slet ikke (altså af systemet) Hvorfor ? –Fejlbehandling udvalgte steder –Fejlbehandling hvor den nødvendige information er til stede Propagation.java L&L side 539 i BlueJ

15 GP9, Martin Lillholm 15 Undtagelser og opgaver Ingen obligatorisk opgave i undtagelser Prøveeksamen I stedet Undtagelser er pensum – lav selv opgaver!

16 GP9, Martin Lillholm 16 I/O Exceptions igen … TestData.java side 547 I BlueJ Der findes mange andre I/O exceptions –FileNotFoundException –EOFException –…

17 GP9, Martin Lillholm 17


Download ppt "GP9, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 11 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder."

Lignende præsentationer


Annoncer fra Google