Avatar billede sputii Nybegynder
04. maj 2009 - 16:01 Der er 7 kommentarer

Exception

Hvad er exception til?
Kan ikke helt forstå det. Men jeg har læst det her.
http://www.w3schools.com/php/php_exception.asp
Avatar billede arne_v Ekspert
04. maj 2009 - 17:44 #1
Den tekst forklarer vel fint hvordan du bruger det.

Jeg gætter på at du undrer dig over hvorfor du skal bruge det.

Hvis du har en funktion A som kalder en funktion B som kalder en funktion C som kalder en funktion D og du får en fejl situration i D, så vil du med traditionel kode skulle returnere en fejl kode, som returneres til C, som returnerer en fejl kode til B, som returnerer en fejl kode til A, som så håndterer fejlen. Med exception kan D smide en eception og A kan catche den og håndtere den uden at B og C skal fyldes op med fejlhåndterings kode.
Avatar billede arne_v Ekspert
04. maj 2009 - 17:45 #2
Derudover så har de fleste andre sprog exceptions, så der er måske også lidt "so ein ding mussen wir auch haben" i det.
Avatar billede sputii Nybegynder
04. maj 2009 - 18:05 #3
Hvorfor er der eksempler på nogen andet så
Avatar billede arne_v Ekspert
04. maj 2009 - 18:12 #4
Eksempler på hvad?
Avatar billede sputii Nybegynder
04. maj 2009 - 18:18 #5
Prøv at giv mig et eksempel på det du mener..
Avatar billede arne_v Ekspert
04. maj 2009 - 18:54 #6
Sammenlign:

<?php
function d($s) {
    if($s != null) {
        return "D";
    } else {
        return null;
    }
}

function c($s) {
    $res = d($s);
    if($res != null) {
        return "C" . $res;
    } else {
        return null;
    }
}

function b($s) {
    $res = c($s);
    if($res != null) {
        return "B" . $res;
    } else {
        return null;
    }
}

function a($s) {
    $res = b($s);
    if($res != null) {
        echo "A" . $res;
    } else {
        echo "Argument was null";
    }
}

a("x");
a(null);
?>

og:

<?php
function d($s) {
    if($s == null) {
        throw new Exception("Argument was null");
    }
    return "D";
}

function c($s) {
    return "C" . d($s);
}

function b($s) {
    return "B" . c($s);
}

function a($s) {
    try {
        echo "A" .  b($s);
    } catch(Exception $ex) {
        echo $ex->getMessage();
    }
}

a("x");
a(null);
?>
Avatar billede arne_v Ekspert
04. juli 2009 - 04:42 #7
OK ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester