Malcolm Beck´s: Fehlerbehandlung in PHP mit MySQL

Beitrag lesen

hi,

wenn Beispielsweise die vom Programmierer gewünschte Zeichenkodierung einer Seite nicht geladen werden kann -- warum auch immer -- sollte die Seite dann trotzdem ausgeliefert werden, eben mit einer falschen Zeichenkodierung, oder sollte man besser an dieser Stelle das Script abbrechen und dem Client eine entsprechende Meldung schicken?

Ist folgendes Szenario Sinnvoll?  (wird noch um ein kleines Script erweitert, das eventuell auftretende Fehler in der DB speichert)

  /*  
   * Zeichenkodierung auf UTF-8 setzen, wenn's nicht klappt, fehler ausgeben  
  */  
  if (!$_connect->set_charset("utf8"))  
  {  
    header("HTTP/1.1 500 Internal Server Error");  
    $Error = sprintf('<p>Ein fehler ist beim laden der Zeichenkodierung UTF-8 aufgetreten: <strong>%s</strong></p>', $_connect->error;  
    $template->assign($Error);  
  }  
  /*  
   * Wenn Zeichenkodierung OK, SELECT-Statement abarbeiten  
  */  
  else if ($content = $_connect->query($SELECT))  
  {  
    if ($row = $content->fetch_assoc())  
    {  
      header("HTTP/1.1 200 ok");  
      $template->assign($row);  
    }  
    else  
    {  
      /*  
       * Wenn keine Inhalte gefunden werden, error 404 melden  
      */  
      header("HTTP/1.1 404 not found");  
      $Error = '<p>Die angegebene Seite konnte nicht gefunden werden.';  
      $template->assign($Error);  
    }  
  }  
  else  
  {  
    /*  
     * Sonstige fehler, wenn eine Tabelle oder ein Feld nicht gefunden werden  
    */  
    header("HTTP/1.1 500 Internal Server Error");  
    $Error = sprintf('<p>Ein fehler ist aufgetreten: <strong>%s</strong></p>', $_connect->error;  
    $template->assign($Error);  
  }

In diesem Zusammenhang würden mich auch die jeweiligen Header-Status interessieren, die da in Frage kommen.
„Header 200“ und „Header 404“ ist klar, was aber bei den sonstigen Fehlern wie falsche Zeichenkodierung oder Fehler im SELECT-Statement?

Was tun, wenn die Verbindung zur Datenbank nicht aufgebaut werden kann? Gibt es Alternativen zu die()?
Wobei dann noch zu klären wäre, warum das Script weiter arbeiten sollte, wenn eh keine Verbindung hergestellt werden kann.

mfg

--
echo '<pre>'; var_dump($Malcolm_Beck`s); echo '</pre>';
array(2) {
  ["SELFCODE"]=>
  string(74) "ie:( fl:) br:> va:? ls:? fo:) rl:| n4:# ss:{ de:? js:} ch:? sh:( mo:? zu:("
  ["Meaningful"]=>
  string(?) "Der Sinn des Lebens ist deinem Leben einen Sinn zu geben"
}