140 likes | 271 Views
Kapittel 10. Exceptions. 10.1 Handtering av exceptions. Ein exception er eit objekt som representerer ein feil eller eit unntak Exceptions blir kasta av program eller runtime-miljøet, og kan bli fanga opp og behandla om vi ønskjer det Mange situasjonar kan føre til at exceptions blir kasta
E N D
Kapittel 10 Exceptions
10.1 Handtering av exceptions • Ein exception er eit objekt som representerer ein feil eller eit unntak • Exceptions blir kasta av program eller runtime-miljøet, og kan bli fanga opp og behandla om vi ønskjer det • Mange situasjonar kan føre til at exceptions blir kasta • Forsøk på å dele på 0 • Arrayindeks utanfor grensene • Fil som ikkje finst • Forsøk på bruk av nullreferanse • etc
Handtering av exceptions • Ein exception kan representere ein situasjon der programmet bør avslutte, eller der vi kan fortsette etter f eks å ha skrive ut ei melding • Tre måtar å behandle exceptions på • Ingen behandling • Behandle der feilen oppstår • Behandle ein annan stad i programmet
10.2 Ubehandla exceptions • Om programmet ikkje fangar opp og behandlar feilen, vil det avslutte unormalt • Vi vil få ut ei melding om • Kva type feil oppsto, årsak • Kvar oppsto feilen, call stack trace • Metode, fil, linjenummer • Metoder som blei kalt for å komme til der feilen oppsto • Nyttig informasjon som vi ofte kan bruke til å finne feil i koden
10.3 try-catch • Programsetning for å fange opp og behandle exceptions • try – blokk for “kritsk” kode • Ei catch – setning for kvar exception • Eventuelt finally – setning til slutt • Dersom exception blir kasta når try – blokka blir utført • Kontroll blir flytta til catch – setninga for den aktuelle exception • Koden der blir kjørt
try-catch • Det som står i try – blokka etter at feilen oppsto blir ikkje utført • Dersom rett type exception ikkje blir fanga opp i ei catch – setning, vil programmet terminere • Dersom ingen exception blir kasta, blir ingen av catch – setningane utført • Ei eventuell finally – setning blir alltid utført • finally er forsåvidt overflødig, og kan like gjerne sløyfast. • Blir brukt for kode som logisk sett høyrer saman med det som står i try - blokka
10.4 Forplanting av exceptions • Viss ein exception ikkje blir fanga opp og behandla der han oppstår, vil programkontrollen bli overført til metoden som kalla metoden der feilen oppsto • Om ikkje denne metoden heller fangar og behandlar exception’en, blir kontroll overført vidare • Til slutt er kontrollen i main() • Programmet terminerer om ikkje main() fangar og behandlar exception • Vi kallar dette forplanting eller propagering • Vi bestemmer på kva nivå vi eventuelt vil fange og behandle exceptions • Designspørsmål
10.5 Klassehierarki • Throwable er superklasse for både Error og Exception • Exception har mange subklasser som definerer ulike typer exceptions • Vi kan skrive våre eigne klasser for spesielle exceptions ved å arve Exception eller subklasser av Exception • throw • Startar exception - propagering
Klassehierarki • throws • Lagt til i metode – header for å vise at metoden vil kaste eller propagere ein spesiell exception om denne oppstår • Checked og unchecked exceptions • Checked krev throws, unchecked gjer ikkje • Alle exceptions i Java er checked, unntatt RunTimeException med subklasser, som ArithmeticException og NullPointerException
10.6 I/O Exceptions • Input og output kan lett føre til uforutsette situasjoner der exceptions blir kasta • Typisk situasjon: vi prøver å opne ei ikkje – eksisterande fil for innlesing • Stream – omgrepet • Informasjonsstraum (elv?) • Kilde – sluk • Standard I/O streams: System.in, System.out og System.err • Dette er objektreferanser som er både public og static
I/O Exceptions • java.io – pakken har klasser for å definere streams med ulike eigenskaper • TestData – eksemplet • Mykje av det I/O – klassene utfører kan føre til exceptions av klassen IOException eller subklasser av denne • IOException er ein checked exception • Alle metoder som utfører I/O må difor • Ha throws IOException i headeren Eller • Fange exceptions med try - catch
10.7 – 10.9 Grafikk • Tool tips • Kort tekst med info • Kan leggast til alle Swing – komponentar • Blir vist når musepeikaren stoppar over komponenten • Mnemonics • Tegn/bokstav som viser at det finst ein hurtigtast (ALT + bokstav) som kan brukast i staden for mus • Kan brukast på knappar og menyvalg
Grafikk • Komponentar kan “settast ut av drift” når vi vil unngå bruk • Komponenten blir grå • Blir brukt i situasjonar der brukaren ikkje skal kunne bruke komponenten • Komboboksar • Blir brukt for å tilby eit avgrensa utval • Godt hjelpemiddel for å unngå feil • Kan bruke editable dersom brukaren skal kunne skrive inn eigne valg • Fyrer ein action event vi kan fange opp med ein listener når brukaren gjer eit valg
Grafikk • Scroll panes • Blir brukt til å vise bilder eller tekst som krev meir plass enn det er naturleg å ha i eit vindu • Split panes • Viser to komponentar som er skilt med ein strek, vertikalt eller horisontalt • Kan nøstast for å dele opp i fleire felt