V. 8.7 (27.03.2012)

Infos

Download

Theorie PDO

Schnellsuche

PDO - Fehlerbehandlungn - Die Exception-Klasse

1. Ein Segen

Fürwahr, mit dieser Exception-Klasse ist endlich mal eine vernünftige Ausnahmebehandlung möglich. Das fängt schon beim Verbindungsaufbau an, wo man nicht mit irgendwelchen error-Methoden von MySQLi arbeiten muss. Da reicht ein einfaches


try {
  
$pdo  = new PDO ($server$user$password);
}
catch (
PDOException $e) {
  ...
}

2. Fehlerhafte SQL-Statements abfangen

Hier arbeitet man genau so, wenn man zuvor den entsprechenden Debug-Wert mittels $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); gesetzt hat. Ansonsten funktioniert das nicht.


try {
  
// Spalte bla existiert nicht
  
$query  'SELECT bla FROM suche WHERE id > 600';
  
$result $pdo -> query($query);
}
catch (
PDOException $e) {
  
print_r($e);
}

3. Die Fehlermeldung

... selber stellt sich bei einem print_r so dar. Aus Gründen der Übersicht stelle ich nur mal die wichtigen Dinge vor.


PDOException Object
(
  [
message:protected] => SQLSTATE[42S22]: Column not found
                         
1054 Unknown column 'bla' in 'field list'
  
[code:protected] => 42S22
  
[file:protected] => [absoluter Pfad zur Datei]
  [
line:protected] => [Fehler in Zeile X]
  [
errorInfo] => Array
    (
      ...
    )
)

Die einzelnen Punkte

Natürlich

... kann man auch hier die üblichen Methoden der "normalen" Exception-Klasse nutzen, Also zum Beispiel getTrace für die Ablaufverfolgung.

4. Eine eigene Exception-Klasse?

So was kann man natürlich auch machen, wenn sie auf der PDOException aufbaut. Je nach Art und Umfang eines Projektes ist das sogar empfehlenswert.


class myPDOException extends Exception {
  ...
}

Bei den geplanten Tutorials werde ich darauf genauer eingehen. Und mich genauer mit den Vor- und Nachteilen befassen. Bis dahin seid geduldig und spielt ein wenig mit PDO herum.