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 ?
Annonceindlæg fra Kingston Technology
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.
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!
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