Avatar billede googolplex Novice
08. marts 2005 - 17:34 Der er 5 kommentarer og
1 løsning

Exceptions i stedet for Notices/Warnings/Errors

Jeg undrer mig over, hvorfor jeg (så vidt jeg ved) er nødt til at gøre således, hvis jeg vil have bruge Exceptions når jeg bruger mysqli (OO):

public function setPollStatus($pollId, $pollStatus = true)
{
    $sql = "UPDATE poll_questions SET status = ? WHERE poll_id = ?";

    if (!$stmt = $this->_mysqli->prepare($sql))
    {
        $error = $stmt->error . ' (' . $stmt->errno . ') - ' . $stmt->sqlstate;
        throw new Exception('Database error: ' . $error);
    }

    if (!$stmt->bind_param('is', $bStatus, $bPollId))
    {
        $error = $stmt->error . ' (' . $stmt->errno . ') - ' . $stmt->sqlstate;
    throw new Exception('Database error: ' . $error);
    }
       
    $bStatus = ($pollStatus === true) ? 1 : 0;
    $bPollId = (integer)$pollId;
       
    if (!$stmt->execute())
    {
        $error = $stmt->error . ' (' . $stmt->errno . ') - ' . $stmt->sqlstate;
        throw new Exception('Database error: ' . $error);
    }
       
    if (!$stmt->close())
    {
        $error = $stmt->error . ' (' . $stmt->errno . ') - ' . $stmt->sqlstate;
        throw new Exception('Database error: ' . $error);
    }
}

1. Hvorfor genereres der ikke automatisk Exceptions i stedet for warnings, errors mv. ?
2. Findes der en mere elegant måde end den jeg bruger ?
Avatar billede arne_v Ekspert
08. marts 2005 - 18:28 #1
re 1)

Rent gæt: da exceptions ikke er så meget brugt i PHP verdenen ville man
ikke genere en masse brugere ved at lade base mysqli throwe exceptions

re 2)

Minimum:

        $error = $stmt->error . ' (' . $stmt->errno . ') - ' . $stmt->sqlstate;
        throw new Exception('Database error: ' . $error);

gentages mange gange og må kunne wrappes i en funktion/metode.

Lidt googling viser at det tilsyneladende er mest almindeligt at lave en
klasse som extender mysqli og thrower exceptions.

Med mit meget begrænsede PHP kendskab skal jeg ikke kunne sige om det
er smart eller ej.
Avatar billede googolplex Novice
08. marts 2005 - 22:14 #2
Det er præcis den løsning jeg også har overvejet, i det mindste skal jeg i hvert fald wrappe det som du siger (det har jeg faktisk allerede gjort :P).

Jeg synes stadig det er mystisk at man laver en version hvor Exceptions benyttes og så ikke throwe dem naturligt!
Avatar billede arne_v Ekspert
08. marts 2005 - 22:33 #3
Avatar billede arne_v Ekspert
08. marts 2005 - 22:34 #4
Et par citater:

Somebody also suggested to make all normal functions also raise exceptions instead of throwing errors, the answer 'NO' was the answer


Lukas was rallying to make require throw exceptions when a file could not be found. It stayed with a short thread, as this is obvious that we won't want internal functions suddenly to start throw exceptions
Avatar billede googolplex Novice
09. marts 2005 - 00:59 #5
svar ?
Avatar billede arne_v Ekspert
09. marts 2005 - 07:16 #6
ja da
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