© Jukka Harju, Jukka Juslin Java-ohjelmointi Opas ammattimaiseen osaamiseen Luku 9 Poikkeuskäsittely.

Slides:



Advertisements
Samankaltaiset esitykset
Tuloksellinen Java-ohjelmointi Luku 3 Luokkien käyttäminen
Advertisements

© Jukka Juslin1 Ohjelmointitaito (ict1td002, 12 op) Opintojakson esittely Kevät 2008 Jukka Juslin, Raine Kauppinen Tuloksellinen Java-ohjelmointi.
© Jukka Harju, Viittausmuuttujat. © Jukka Harju, Viittaukset •Viittausmuuttuja sisältää tiedon siitä missä muistipaikassa olio.
© Jukka Harju, Jukka Juslin1 Java-ohjelmointi opas ammattimaiseen osaamiseen Luku 13 Monimuotoisuus.
© Jukka Harju, Jukka Juslin1 Java-ohjelmointi opas ammattimaiseen osaamiseen Luku 6 (osittain) Tiedostot.
© 2004 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice Java-perusteet Kari Kujansuu
Nämä kalvot on lisensoitu Creative Commons Attribution-ShareAlike 1
Tuloksellinen Java-ohjelmointi Luku 9 Taulukot ja perustietorakenteet
Jukka Juslin Poikkeukset ja niiden paikallistaminen * Jukka Juslin * Liittyy oppikirjan lukuun 11.
Taulukot: Array Taulukko Javassa pitää aina perustaa (new)
Taulukoiden määrittely, käsittely ja kopiointi Vaihtoehdot taulukoille
22. Taulukot.
Ohjelmointitaito (ict1td002, 12 op) Syksy 2008
13. Pakkaukset.
Näytölle tulostaminen. 7.2 Sisällys System.out.println - ja System.out.print -operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden.
Java-ohjelmointi Opas ammattimaiseen osaamiseen Luku 4 Toistolauseet
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Yksinkertaiset graafiset syöttö- ja tulostustoiminnot.
Poikkeuskäsittely- lohkot tMyn1 Poikkeuskäsittelylohkot try-catch Poikkeustilanteiden käsittelymekanismi toteutetaan varatuilla sanoilla try, throw ja.
16. Lohkot Sisällys Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat.
Poikkeustenkäsittely  Mitä poikkeustenkäsittely tarkoittaa?  Poikkeuksen käsitteleminen  Poikkeusluokkien hierarkia  Poikkeuksen heittäminen 1.
Toiston tekeminen Javalla  Mikä toistorakenne on?  while toistorakenne  do-while toistorakenne  for toistorakenne 1.
© Jukka Harju, Jukka Juslin
1 Kertaus koetta varten oleellisista asioista Jukka Juslin.
Java-ohjelmointi Opas ammattimaiseen osaamiseen Luku 2 Ensimmäiset ohjelmat © Jukka Harju, Jukka Juslin.
7. Oliot ja viitteet.
Java Java on Sun Microsystems yhtiön kehittämä laaja olio-pohjainen ohjelmointikieli, joka on laitteistoriippumaton. Laitteistoriippumattomuudessa on.
Metodit – Arvotyyppi Ellei metodi palauta arvoa, sen arvotyyppi on void Tällöin ”return;”-lauseke ei ole metodissa pakollinen, vaikka sen käyttö on sallittua.
20. Javan omat luokat.
Kuinka niitä käsitellään
Tietovirrat ja tiedostot. Anne Benson Tiedon koodaus it-järjestelmissä pienin tietoyksikkö bitti –kaksi tilaa: nolla (sähkövirtaa ei ole) yksi (sähkövirtaa.
HelloWorld-ohjelma. 5.2 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi.
4. Attribuutit 4.1. Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2.
5. Kapselointi Yleistä Kapseloinnilla (encapsulation) tarkoitetaan luokan tietojen ja toimintojen pakkaamista yhdeksi suojatuksi kokonaisuudeksi.
10. Abstrakti luokka Johdanto Abstrakti luokka (abstract class) poikkeaa konkreettisesta luokasta (ei-abstrakti luokka) siten, että siitä ei.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Näppäimistöltä lukeminen Sisällys Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä. In -luokka.
22. Taulukot.
Poikkeukset Yleistä Virheeseen varautuminen tarkoittaa sitä, että ohjelmoija huomioi koodia kirjoittaessaan ajonaikaisen virheen mahdollisuuden.
© Jukka Juslin1 Tiedostot Tuloksellinen Java-ohjelmointi.
Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen
@ Leena Lahtinen TIETOKONEOHJELMAN RAKENNE OHJELMALLA ON KAKSI OSAA:  MÄÄRITYSOSA TIETOJEN KUVAUKSIA VARTEN  SUORITUSOSA TIETOJEN KÄSITTELYÄ.
© Jukka Juslin1 Osio2 Olio-ohjelmointi: Merkkijonot eli Stringit Jukka Juslin.
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely.
Oliot ja luokat Oliot ja luokat Oliot (object) ja luokat (class) ovat keskeisiä olio- ohjelmoinnin käsitteitä. Olio-ohjelmointi on ohjelmointiparadigma,
© Jukka Harju, Jukka Juslin1 Tuloksellinen Java-ohjelmointi HashMap, Properties, Logger, etc Tuloksellinen Java-ohjelmointi.
Poikkeustenkäsittely- lohkot tMyn1 Poikkeustenkäsittelylohkot try-catch Poikkeustilanteiden käsittelymekanismi toteutetaan varatuilla sanoilla try, throw.
Tiedostojen käsittely
Tuloksellinen Java-ohjelmointi Luku 2 Ensimmäiset ohjelmat
Olioiden taulukointi Perustaulukon käyttö Luokan ilmentymät voidaan tallettaa taulukkoon samoin kuin muuttujat Esimerkki talletetaan taulukkoon opintojaksojen.
Java - Tietokanta. JDBC=Java database connectivity  ODBC:n kaltainen ohjelmointiliittymä SQL- tietokantoihin  Koostuu Java-kehitysympäristön (esim.
Javan oliovirrat eli oliotiedostojen käsittely. Olio- eli objektitiedostojen käsittely Käsittely täysin samanlaista kuin muiden tiedostojen 1.Otetaan.
1 © Jukka Juslin Luokat, attribuutit ja metodit Yleistietoa: seuraavalla koulutusviikolla tarkempi käsittely.
14. Poikkeukset Sisällys Johdanto poikkeuksiin. Poikkeusten käsittely: − Poikkeusten käsittely paikallisesti. − Poikkeusten heittäminen. Exception.
Sähköpostin lähetys Java- ohjelmasta Jukka Juslin.
15. Ohjelmoinnin tekniikkaa
Tiedostot. 8.2 Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen.
6. Tiedostot.
Tuloksellinen Java-ohjelmointi
Poikkeustenkäsittelylohkot try-catch
14. Poikkeukset.
Kuinka niitä käsitellään
8. Näppäimistöltä lukeminen
3. Luokat, oliot ja metodit Java-kielessä (Lausekielinen ohjelmointi I ja II –kursseilla opitun kertausta.)
8. Näppäimistöltä lukeminen
Kuinka niitä käsitellään
14. Poikkeukset.
14. Poikkeukset.
4. Luokan testaus ja käyttö olion kautta
eli oliotiedostojen käsittely
Esityksen transkriptio:

© Jukka Harju, Jukka Juslin Java-ohjelmointi Opas ammattimaiseen osaamiseen Luku 9 Poikkeuskäsittely

© Jukka Harju, Jukka Juslin Nämä kalvot on lisensoitu Creative Commons Attribution-ShareAlike 1.0 -lisenssillä. Lisäys edelliseen lisenssiin: Kalvojen muokkaaminen on sallittu vain opettajille, joiden kursseilla käytetään kurssikirjana Tuloksellinen Java-ohjelmointi – tai Java ohjelmointi opas ammattimaiseen osaamiseen -kirjaa.Creative Commons Attribution-ShareAlike 1.0 -lisenssillä

© Jukka Harju, Jukka Juslin Missä ollaan? Johdanto Try-catch-finally –rakenne Poikkeusolion sisältämät tiedot Milloin pyydystetään? Poikkeusten heittäminen

© Jukka Harju, Jukka Juslin Johdanto Javassa ajonaikainen ohjelman normaalia suorittamista häiritsevä tapahtuma synnyttää poikkeuksen ( Exception ). Poikkeuksia ovat esimerkiksi taulukon rajan ali- / yliviittaaminen ( IndexOutOfBoundsException ) tai ei-numeerisen tiedon numeroksi muuntamisyritys ( NumberFormatException ).

© Jukka Harju, Jukka Juslin Try–catch–finally -rakenne Poikkeukset käsitellään Javassa try–catch– finally rakenteella. Try -osaan sijoitetaan lauseet, jotka voivat aiheuttaa poikkeuksen syntymisen. Catch -osassa käsitellään tietyn tyyppisen poikkeukset. Lopuksi suoritetaan molemmille osille yhteinen finally -osa. Seuraavassa esimerkki try-catch –lohkosta, katso myös kirjan esimerkki 7.1.

© Jukka Harju, Jukka Juslin Try–catch–finally -rakenne public class PoikkeuskasittelyEsimerkki { public void laske() { int osoittaja = 10, nimittaja = 0; int osamaara; try { osamaara = osoittaja / nimittaja; } catch (Exception ex) { System.out.println("Nollalla jakaminen ei ole sallittua!"); } } public static void main(String[] args) { PoikkeuskasittelyEsimerkki laskuri = new PoikkeuskasittelyEsimerkki(); laskuri.laske(); } } Poikkeuksen mahdollisesti synnyttävät lauseet sijoitetaan try -lohkoon. Poikkeuksen käsittelevät lauseet sijoitetaan catch - lohkoon.

© Jukka Harju, Jukka Juslin Try–catch–finally -rakenne catch -lohkoja voidaan toteuttaa useita peräkkäin. Tällöin eri catch -lohkoissa pyydystetään eri tyyppisiä poikkeuksia (eri Exception -luokkien olioita) edeten erityisestä yleisempään poikkeukseen. Seuraavassa esimerkki useamman kuin yhden catch -lohkon toteuttamisesta.

© Jukka Harju, Jukka Juslin Try–catch–finally -rakenne public class PoikkeuskasittelyEsimerkki { public void laske() { int osoittaja = 10, nimittaja = 0; int osamaara; try { osamaara = osoittaja / nimittaja; } catch (ArithmeticException ex) { System.out.println("Nollalla jakaminen ei ole sallittua!"); } catch (Exception ex) { System.out.println("Tapahtui tunnistamaton poikkeus!"); } } public static void main(String[] args) { PoikkeuskasittelyEsimerkki laskuri = new PoikkeuskasittelyEsimerkki(); laskuri.laske(); } } Kaksi catch -lohkoa, jotka pyydystävät eri poikkeuksia.

© Jukka Harju, Jukka Juslin Try–catch–finally -rakenne finally -lohkon toteutetaan catch - lohkojen jälkeen. finally -lohko suoritetaan aina lopuksi riippumatta siitä suoritettiinko catch - lohkoja tai ei. Seuraavassa esimerkki finally -lohkon toteuttamisesta.

© Jukka Harju, Jukka Juslin Try–catch–finally -rakenne public class PoikkeuskasittelyEsimerkki { public void laske() { int osoittaja = 10, nimittaja = 0; int osamaara = 0; try { osamaara = osoittaja / nimittaja; } catch (ArithmeticException ex) { System.out.println("Nollalla jakaminen ei ole sallittua!"); } catch (Exception ex) { System.out.println("Tapahtui tunnistamaton poikkeus!"); } finally { System.out.println("Laskenta suoritettu."); System.out.println("Tulos = " + osamaara); } } public static void main(String[] args) { PoikkeuskasittelyEsimerkki laskuri = new PoikkeuskasittelyEsimerkki(); laskuri.laske(); } } finally -lohko toteutetaan try - ja catch -lohkojen jälkeen.

© Jukka Harju, Jukka Juslin Try–catch–finally -rakenne try -lohkon suoritus keskeytyy poikkeuksen suorittavan lauseen kohdalla ja kontrolli siirtyy sopivaan catch -lohkoon. Seuraavassa esimerkki tällaisesta tilanteesta.

© Jukka Harju, Jukka Juslin Try–catch–finally -rakenne public class PoikkeuskasittelyEsimerkki { public void laske() { int osoittaja = 10, nimittaja = 0; int osamaara; try { osamaara = osoittaja / nimittaja; System.out.println("Tämä ei koskaan tulostu!"); } catch (Exception ex) { System.out.println("Nollalla jakaminen ei ole sallittua!"); } } public static void main(String[] args) { PoikkeuskasittelyEsimerkki laskuri = new PoikkeuskasittelyEsimerkki(); laskuri.laske(); } } Tätä lausetta ei suoriteta.

© Jukka Harju, Jukka Juslin Missä ollaan? Johdanto Try-catch-finally –rakenne Poikkeusolion sisältämät tiedot Milloin pyydystetään? Poikkeusten heittäminen

© Jukka Harju, Jukka Juslin Poikkeusolion sisältämät tiedot Poikkeusoliolta voidaan pyytää tarkempia tietoja poikkeuksen syystä metodeilla getMessage ja printStackTrace. getMessage palauttaa String -tyyppisen viestin poikkeuksen syystä printStackTrace tulostaa metodien kutsuketjun poikkeusriviin saakka. Seuraavassa esimerkki näiden käytöstä.

© Jukka Harju, Jukka Juslin Poikkeusolion sisältämät tiedot public class PoikkeuskasittelyEsimerkki { public void laske() { int osoittaja = 10, nimittaja = 0; int osamaara; try { osamaara = osoittaja / nimittaja; } catch (Exception ex) { System.out.println("Poikkeusoliolta saatu viesti:"); System.out.println(ex.getMessage()); System.out.println("Metodien kutsuketju:"); ex.printStackTrace(); } } public static void main(String[] args) { PoikkeuskasittelyEsimerkki laskuri = new PoikkeuskasittelyEsimerkki(); laskuri.laske(); } } Metodien kutsuketjun tulostaminen. Poikkeusoliolta saatavan viestin tulostaminen.

© Jukka Harju, Jukka Juslin Poikkeusolion sisältämät tiedot Edellinen ohjelma tulostaa seuraavaa: Poikkeusoliolta saatu viesti: / by zero Metodien kutsuketju: java.lang.ArithmeticException: / by zero at PoikkeuskasittelyEsimerkki5.laske(PoikkeuskasittelyEsimerkki5.java:7) at PoikkeuskasittelyEsimerkki5.main(PoikkeuskasittelyEsimerkki5.java:18)

© Jukka Harju, Jukka Juslin Missä ollaan? Johdanto Try-catch-finally –rakenne Poikkeusolion sisältämät tiedot Milloin pyydystetään? Poikkeusten heittäminen

© Jukka Harju, Jukka Juslin Milloin pyydystetään? Javassa poikkeukset jaetaan kahteen pääluokkaan: –Tarkistettavat (checked) –Tarkistamattomat (unchecked) Kääntäjä antaa virheilmoitukset tarkistettavista poikkeuksista, joille ei ole toteutettu poikkeuskäsittelyä. Metodin mahdollisesti heittämät poikkeukset voidaan aina tarkistaa Java-APIsta ja lisätä tarvittava poikkeuskäsittely.

© Jukka Harju, Jukka Juslin Missä ollaan? Johdanto Try-catch-finally –rakenne Poikkeusolion sisältämät tiedot Milloin pyydystetään? Poikkeusten heittäminen

© Jukka Harju, Jukka Juslin Poikkeusten heittäminen Poikkeus voidaan siirtää käsiteltäväksi kutsuneelle metodille ”heittämällä” se. Poikkeuksen heittämisessä käytetään throws - avainsanaa. Kutsuneen metodin on sisällettävä heitetyn poikkeuksen käsittely. Seuraavassa esimerkki poikkeuksen heittämisestä, katso myös kirjan esimerkki 7.2.

© Jukka Harju, Jukka Juslin Poikkeusten heittäminen public class PoikkeuskasittelyEsimerkki { public void laske() throws ArithmeticException { int osoittaja = 10, nimittaja = 0; int osamaara; osamaara = osoittaja / nimittaja; } public static void main(String[] args) { PoikkeuskasittelyEsimerkki laskuri = new PoikkeuskasittelyEsimerkki(); try { laskuri.laske(); } catch (ArithmeticException ex) { System.out.println("Nollalla jakaminen ei ole sallittua!"); } } } Heitetyn poikkeuksen käsittely. Metodin määrittelyssä on kerrottava metodin heittävän poikkeuksia.