Download - Poikkeustenkäsittelylohkot try-catch
![Page 1: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/1.jpg)
Poikkeustenkäsittely- lohkot
tMyn 1
Poikkeustenkäsittelylohkot try-catch
• Poikkeustilanteiden käsittelymekanismi toteutetaan varatuilla sanoilla try, throw ja catch.
• try aloittaa poikkeustenkäsittelylohkon, johon ohjelmoija kirjoittaa virhealttiin ohjelmakoodin.
• Jos try-lohkossa tapahtuu virhe, throw luo poikkeuksen, jonka catch-lohko käsittelee.
• catch-lohko sisältää kullekin virhetilanteelle käsittelijän.
• try- ja catch-lohkot sijaitsevat suoritusjärjestyksessä peräkkäin.
![Page 2: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/2.jpg)
Poikkeustenkäsittely- lohkot
tMyn 2
• Poikkeus voi olla mitä tahansa tyyppiä oleva tieto tai olio.
• Usein on hyödyllistä määritellä poikkeusten käsittelyä varten erillinen luokka, johon voidaan määritellä tietojäseniä virhetilanteiden tallettamista varten.
• Kun poikkeustilanne syntyy, ohjelman eteneminen keskeytyy, ja ohjelma etsii sopivaa poikkeuksenkäsittelijää.
![Page 3: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/3.jpg)
Poikkeustenkäsittely- lohkot
tMyn 3
• try-catch -lohkot:
try
{
//virhealtis toiminta
}
catch (tyyppi poikkeus)
{
//poikkeuskäsittely
}
catch(...)
{
//poikkeuskäsittely
}
![Page 4: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/4.jpg)
Poikkeustenkäsittely- lohkot
tMyn 4
• try- ja catch -lohkot sijaitsevat suoritusjärjestyksessä peräkkäin.
• try-lohko sisältää ohjelmakoodin, joka voi aiheuttaa poikkeustilanteen.
• catch-lohkossa voidaan määritellä poikkeuksenkäsittelijä kullekin eri poikkeukselle.
• Poikkeuksenkäsittelijä on catch-lohkossa sijaitseva ohjelmakoodi.
• Poikkeustieto tai olio määritellään catch-sanan jäljessä olevien sulkeiden välissä.
![Page 5: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/5.jpg)
Poikkeustenkäsittely- lohkot
tMyn 5
• tyyppi tarkoittaa poikkeustiedon tai olion tyyppiä ja poikkeus on tieto tai olio, johon voidaan viitata catch-lohkossa.
• Poikkeus on paikallinen lohkossa.• Jos sulkeiden sisällä on kolme pistettä, käsittelee
lohko minkä tahansa poikkeustilanteen.• Poikkeuskäsittelylohkot voivat olla myös sisäkkäisiä,
joten ne voivat muodostaa sisäkkäisiä tasoja.
![Page 6: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/6.jpg)
Poikkeustenkäsittely- lohkot
tMyn 6
• Poikkeustilanteen aiheuttaminen varatulla sanalla throw:
throw (poikkeukset);
throw;
• Poikkeukset määritellään throw-sanan jäljessä.• Poikkeukset voivat olla sulkeiden sisällä.• Jos tilanteesta syntyy useita poikkeuksia, on
poikkeukset eroteltava pilkulla toisistaan.• throw-sanaa käytetään normaalisti try-lohkossa.• catch-lohkossa on kuitenkin mahdollista nostattaa
uusi poikkeustilanne.
![Page 7: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/7.jpg)
Poikkeustenkäsittely- lohkot
tMyn 7
• Tällöin voidaan throw-sanaa käyttää ilman erityistä poikkeustietoa, jolloin poikkeuskäsittely siirretään seuraavaksi korkeammalle poikkeuskäsittelytasolle sisäkkäisissä poikkeuskäsittelyrakenteissa.
• Jos throw esiintyy uloimmalla tasolla, ohjelma kutsuu terminate-funktiota.
• Kokeillaan try-catch –rakenteen toimimista.
![Page 8: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/8.jpg)
Poikkeustenkäsittely- lohkot
tMyn 8
• Jos poikkeustilanne aiheutetaan, mutta poikkeuksenkäsittelijää ei toteuteta, niin seurauksena on ohjelman ajon keskeytyminen, Fatal error:
![Page 9: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/9.jpg)
Poikkeustenkäsittely- lohkot
tMyn 9
![Page 10: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/10.jpg)
Poikkeustenkäsittely- lohkot
tMyn 10
![Page 11: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/11.jpg)
Poikkeustenkäsittely- lohkot
tMyn 11
• PHP:n sisäänrakennettu poikkeuskäsittelyluokka näyttää seuraavanlaiselta:
![Page 12: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/12.jpg)
Poikkeustenkäsittely- lohkot
tMyn 12
<?php class Exception {
protected $message = 'Unknown exception'; // exception messageprotected $code = 0; // user defined exception codeprotected $file; // source filename of exceptionprotected $line; // source line of exception
function __construct($message = null, $code = 0);
final function getMessage(); // message of exception final function getCode(); // code of exceptionfinal function getFile(); // source filenamefinal function getLine(); // source linefinal function getTrace(); // an array of the backtrace()final function getTraceAsString(); // formated string of trace
/* Overrideable */function __toString(); // formated string for display
}?>
![Page 13: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/13.jpg)
Poikkeustenkäsittely- lohkot
tMyn 13
• Toteutetaan äskeinen ohjelma siten, että kirjoitetaan virhealtis koodi try-lohkoon ja toteutetaan virhetilanteelle käsittelijä catch-lohkoon:
![Page 14: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/14.jpg)
Poikkeustenkäsittely- lohkot
tMyn 14
![Page 15: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/15.jpg)
Poikkeustenkäsittely- lohkot
tMyn 15
![Page 16: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/16.jpg)
Poikkeustenkäsittely- lohkot
tMyn 16
![Page 17: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/17.jpg)
Poikkeustenkäsittely- lohkot
tMyn 17
Description
final public string Exception::getMessage ( void )
Returns the Exception message.
Parameters
This function has no parameters.
Return Values
Returns the Exception message as a string.
![Page 18: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/18.jpg)
Poikkeustenkäsittely- lohkot
tMyn 18
• Otetaan poikkeuskäsittelyluokasta vielä käyttöön jäsenfunktio getCode(), muilta osin esimerkki on sama kuin edellä:
![Page 19: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/19.jpg)
Poikkeustenkäsittely- lohkot
tMyn 19
![Page 20: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/20.jpg)
Poikkeustenkäsittely- lohkot
tMyn 20
![Page 21: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/21.jpg)
Poikkeustenkäsittely- lohkot
tMyn 21
![Page 22: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/22.jpg)
Poikkeustenkäsittely- lohkot
tMyn 22
Description
final public int Exception::getCode ( void )
Returns the Exception code.
Parameters
This function has no parameters.
Return Values
Returns the Exception code as an integer.
![Page 23: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/23.jpg)
Poikkeustenkäsittely- lohkot
tMyn 23
• Millähän rivillä virhe havaittiin?:
![Page 24: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/24.jpg)
Poikkeustenkäsittely- lohkot
tMyn 24
![Page 25: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/25.jpg)
Poikkeustenkäsittely- lohkot
tMyn 25
![Page 26: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/26.jpg)
Poikkeustenkäsittely- lohkot
tMyn 26
![Page 27: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/27.jpg)
Poikkeustenkäsittely- lohkot
tMyn 27
Descriptionfinal public int Exception::getLine ( void )Returns line number where the exception was thrown. ParametersThis function has no parameters.Return ValuesReturns the line number where the exception was thrown.
![Page 28: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/28.jpg)
Poikkeustenkäsittely- lohkot
tMyn 28
• Sisäänrakennettua Exception-luokkaa voidaan käyttää kantaluokkana, ja periyttää siitä omia poikkeuskäsittelyluokkia erilaisten virhetilanteiden käsittelyyn.
• Koska omaan poikkeustenkäsittelyluokkaan periytetään kantaluokan jäsenfunktiot, voidaan johdetussa luokassa käyttää kantaluokan jäsenfunktioita (vaikkapa jäsenfunktioita getMessage(), getCode(), getFile()):
![Page 29: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/29.jpg)
Poikkeustenkäsittely- lohkot
tMyn 29
![Page 30: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/30.jpg)
Poikkeustenkäsittely- lohkot
tMyn 30
![Page 31: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/31.jpg)
Poikkeustenkäsittely- lohkot
tMyn 31
![Page 32: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/32.jpg)
Poikkeustenkäsittely- lohkot
tMyn 32
Descriptionfinal public string Exception::getFile ( void )Get the name of the file the exception was thrown from. ParametersThis function has no parameters.Return ValuesReturns the filename in which the exception was thrown.
![Page 33: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/33.jpg)
Poikkeustenkäsittely- lohkot
tMyn 33
• Muutetaan edellistä esimerkkiä siten, että toteutetaan omaan poikkeustenkäsittelyluokkaan oma jäsenfunktio:
![Page 34: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/34.jpg)
Poikkeustenkäsittely- lohkot
tMyn 34
![Page 35: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/35.jpg)
Poikkeustenkäsittely- lohkot
tMyn 35
![Page 36: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/36.jpg)
Poikkeustenkäsittely- lohkot
tMyn 36
![Page 37: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/37.jpg)
Poikkeustenkäsittely- lohkot
tMyn 37
• try-lohkon perässä voi olla useampia käsittelijöitä (catch-lohkoja), ja ne tutkitaan siinä järjestyksessä kuin ne koodissa ovat.
• Ensimmäinen käsittelijä, jonka tyyppi vastaa poikkeuksen tyyppiä, suoritetaan.
![Page 38: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/38.jpg)
Poikkeustenkäsittely- lohkot
tMyn 38
![Page 39: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/39.jpg)
Poikkeustenkäsittely- lohkot
tMyn 39
![Page 40: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/40.jpg)
Poikkeustenkäsittely- lohkot
tMyn 40
![Page 41: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/41.jpg)
Poikkeustenkäsittely- lohkot
tMyn 41
![Page 42: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/42.jpg)
Poikkeustenkäsittely- lohkot
tMyn 42
![Page 43: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/43.jpg)
Poikkeustenkäsittely- lohkot
tMyn 43
![Page 44: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/44.jpg)
Poikkeustenkäsittely- lohkot
tMyn 44
![Page 45: Poikkeustenkäsittelylohkot try-catch](https://reader036.vdocuments.net/reader036/viewer/2022062500/5681509e550346895dbe987e/html5/thumbnails/45.jpg)
Poikkeustenkäsittely- lohkot
tMyn 45