poikkeustenkäsittelylohkot try-catch
DESCRIPTION
Poikkeustenkäsittelylohkot try-catch. Poikkeustilanteiden käsittelymekanismi toteutetaan varatuilla sanoilla try, throw ja catch. try aloittaa poikkeustenkäsittelylohkon, johon ohjelmoija kirjoittaa virhealttiin ohjelmakoodin. - PowerPoint PPT PresentationTRANSCRIPT
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.
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ää.
Poikkeustenkäsittely- lohkot
tMyn 3
• try-catch -lohkot:
try
{
//virhealtis toiminta
}
catch (tyyppi poikkeus)
{
//poikkeuskäsittely
}
catch(...)
{
//poikkeuskäsittely
}
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ä.
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.
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.
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.
Poikkeustenkäsittely- lohkot
tMyn 8
• Jos poikkeustilanne aiheutetaan, mutta poikkeuksenkäsittelijää ei toteuteta, niin seurauksena on ohjelman ajon keskeytyminen, Fatal error:
Poikkeustenkäsittely- lohkot
tMyn 9
Poikkeustenkäsittely- lohkot
tMyn 10
Poikkeustenkäsittely- lohkot
tMyn 11
• PHP:n sisäänrakennettu poikkeuskäsittelyluokka näyttää seuraavanlaiselta:
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
}?>
Poikkeustenkäsittely- lohkot
tMyn 13
• Toteutetaan äskeinen ohjelma siten, että kirjoitetaan virhealtis koodi try-lohkoon ja toteutetaan virhetilanteelle käsittelijä catch-lohkoon:
Poikkeustenkäsittely- lohkot
tMyn 14
Poikkeustenkäsittely- lohkot
tMyn 15
Poikkeustenkäsittely- lohkot
tMyn 16
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.
Poikkeustenkäsittely- lohkot
tMyn 18
• Otetaan poikkeuskäsittelyluokasta vielä käyttöön jäsenfunktio getCode(), muilta osin esimerkki on sama kuin edellä:
Poikkeustenkäsittely- lohkot
tMyn 19
Poikkeustenkäsittely- lohkot
tMyn 20
Poikkeustenkäsittely- lohkot
tMyn 21
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.
Poikkeustenkäsittely- lohkot
tMyn 23
• Millähän rivillä virhe havaittiin?:
Poikkeustenkäsittely- lohkot
tMyn 24
Poikkeustenkäsittely- lohkot
tMyn 25
Poikkeustenkäsittely- lohkot
tMyn 26
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.
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()):
Poikkeustenkäsittely- lohkot
tMyn 29
Poikkeustenkäsittely- lohkot
tMyn 30
Poikkeustenkäsittely- lohkot
tMyn 31
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.
Poikkeustenkäsittely- lohkot
tMyn 33
• Muutetaan edellistä esimerkkiä siten, että toteutetaan omaan poikkeustenkäsittelyluokkaan oma jäsenfunktio:
Poikkeustenkäsittely- lohkot
tMyn 34
Poikkeustenkäsittely- lohkot
tMyn 35
Poikkeustenkäsittely- lohkot
tMyn 36
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.
Poikkeustenkäsittely- lohkot
tMyn 38
Poikkeustenkäsittely- lohkot
tMyn 39
Poikkeustenkäsittely- lohkot
tMyn 40
Poikkeustenkäsittely- lohkot
tMyn 41
Poikkeustenkäsittely- lohkot
tMyn 42
Poikkeustenkäsittely- lohkot
tMyn 43
Poikkeustenkäsittely- lohkot
tMyn 44
Poikkeustenkäsittely- lohkot
tMyn 45