PHP

PHP KOULUTUSTA VUONNA 2025!

Kurssit saatavilla kautta Suomen. Tule ja varaa oma koulutustapahtumasi heti! Koulutuksen järjestää asiantuntijasi Koulutus- ja konsultointipalvelu KK Mediat.

Virheenkäsittely PHP:ssä – try-catch-finally ja throw

PHP tarjoaa useita keinoja virheiden käsittelyyn. Virheenkäsittelyrakenteet try-catch-finally sekä throw ovat keskeisimmät. Näiden rakenteiden avulla voit estää komentosarjan kaatumisen ja käsitellä virheitä tehokkaammin.

try...catch...finally-rakenne

try-catch-finally mahdollistaa virheiden havaitsemisen ja käsittelemisen ilman, että koko skripti kaatuu. Rakenteen syntaksi on selkeä ja yksinkertainen:


try {
    // Koodilohko, jossa voi esiintyä virheitä
} 
catch (Exception $e) {
    // Virheen käsittelylohko
}
finally {
    // Looginen lohko, joka suoritetaan aina
}


Esimerkiksi:


try {
    $arvo = 10 / 0;  // Tämä aiheuttaa virheen (jakaminen nollalla)
}
catch (Exception $e) {
    echo 'Virhe: ' . $e->getMessage();  // Virheen viesti
}
finally {
    echo "Tämä lohko suoritetaan aina, riippumatta virheestä.";
}

Aivan kaikkia virhetilanteita tällä rakenteella ei voi kumminkaan käsitellä. PHP:ssä virheitä on useita tyyppejä: huomautuksia (notices), varoituksia (warnings) ja poikkeuksia (exceptions). Try-catch-finally rakenne soveltuu vain kun PHP lähettää virheestä nk. Exception-tyylisen virheilmoituksen. PHP:n dokumentaatio sisältää tiedon minkä tyyppisen virheen eri rakenteet ja funktiot palauttavat.

throw-komento

PHP:n throw-komento luo Exception-tyylisen virheen, joka voidaan käsitellä try-catch-rakenteen avulla. Komennon syntaksi on hyvin yksinkertainen:


throw new Exception("Virheen kuvaus");


Esimerkiksi:


function tarkistaSyote($syote) {
    if ($syote < 1) {
        throw new Exception("Syötteen täytyy olla suurempi kuin nolla.");
    }
    return $syote;
}

try {
    echo tarkistaSyote(0);  // Tässä heitetään virhe
} 
catch (Exception $e) {
    echo 'Virhe: ' . $e->getMessage();  // Virhe käsitellään täällä
}