1 / 45

Poikkeustenkäsittelylohkot try-catch

Poikkeustenkäsittelylohkot try-catch. Poikkeustilanteiden käsittelymekanismi toteutetaan varatuilla sanoilla try, throw ja catch. try aloittaa poikkeustenkäsittelylohkon, johon ohjelmoija kirjoittaa virhealttiin ohjelmakoodin.

cana
Download Presentation

Poikkeustenkäsittelylohkot try-catch

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. 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ää. tMyn

  3. try-catch -lohkot: try { //virhealtis toiminta } catch (tyyppi poikkeus) { //poikkeuskäsittely } catch(...) { //poikkeuskäsittely } 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ä. 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. 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. 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. tMyn

  8. Jos poikkeustilanne aiheutetaan, mutta poikkeuksenkäsittelijää ei toteuteta, niin seurauksena on ohjelman ajon keskeytyminen, Fatal error: tMyn

  9. tMyn

  10. tMyn

  11. PHP:n sisäänrakennettu poikkeuskäsittelyluokka näyttää seuraavanlaiselta: tMyn

  12. <?php class Exception { protected $message = 'Unknown exception'; // exception message protected $code = 0; // user defined exception code protected $file; // source filename of exception protected $line; // source line of exception function __construct($message = null, $code = 0); final function getMessage(); // message of exception final function getCode(); // code of exception final function getFile(); // source filename final function getLine(); // source line final function getTrace(); // an array of the backtrace() final function getTraceAsString(); // formated string of trace /* Overrideable */ function __toString(); // formated string for display }?> tMyn

  13. Toteutetaan äskeinen ohjelma siten, että kirjoitetaan virhealtis koodi try-lohkoon ja toteutetaan virhetilanteelle käsittelijä catch-lohkoon: tMyn

  14. tMyn

  15. tMyn

  16. 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. tMyn

  18. Otetaan poikkeuskäsittelyluokasta vielä käyttöön jäsenfunktio getCode(), muilta osin esimerkki on sama kuin edellä: tMyn

  19. tMyn

  20. tMyn

  21. 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. tMyn

  23. Millähän rivillä virhe havaittiin?: tMyn

  24. tMyn

  25. tMyn

  26. tMyn

  27. Description final public int Exception::getLine ( void ) Returns line number where the exception was thrown. Parameters This function has no parameters. Return Values Returns the line number where the exception was thrown. 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()): tMyn

  29. tMyn

  30. tMyn

  31. tMyn

  32. Description final public string Exception::getFile ( void ) Get the name of the file the exception was thrown from. Parameters This function has no parameters. Return Values Returns the filename in which the exception was thrown. tMyn

  33. Muutetaan edellistä esimerkkiä siten, että toteutetaan omaan poikkeustenkäsittelyluokkaan oma jäsenfunktio: tMyn

  34. tMyn

  35. tMyn

  36. 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. tMyn

  38. tMyn

  39. tMyn

  40. tMyn

  41. tMyn

  42. tMyn

  43. tMyn

  44. tMyn

  45. tMyn

More Related