Hauptmenü

Untermenü

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.

zurück zum vorherigen Abschnitt