Der erste sollte niemals im Produktionscode verwendet werden, da er Informationen transportiert, die für Endbenutzer irrelevant sind (ein Benutzer kann nichts gegen "Keine Verbindung zur Datenbank möglich" tun ).
Sie lösen Ausnahmen aus, wenn Sie wissen, dass Ihre Anwendung an einem bestimmten kritischen Codepunkt fehlschlagen kann und Sie möchten, dass Ihr Code über mehrere Aufrufebenen hinweg wiederhergestellt wird.
trigger_error()
Mit dieser Funktion können Sie fehlerhafte Fehlerberichte erstellen (mithilfe verschiedener Ebenen von Fehlermeldungen) und diese Fehler vor Endbenutzern ausblenden (mithilfe von set_error_handler()
), die Ihnen jedoch während des Tests angezeigt werden.
Auch trigger_error()
kann nicht-tödliche Nachrichten erzeugen wichtig bei der Entwicklung , die in der Produktion Code unterdrückt werden kann einen benutzerdefinierten Fehlerhandler verwenden. Sie können auch schwerwiegende Fehler verursachen ( E_USER_ERROR
), die jedoch nicht wiederhergestellt werden können. Wenn Sie einer von denen auslösen, die Programmausführung stoppt an diesem Punkt. Aus diesem Grund sollten für schwerwiegende Fehler Ausnahmen verwendet werden. Auf diese Weise haben Sie mehr Kontrolle über den Ablauf Ihres Programms:
// Example (pseudo-code for db queries):
$db->query('START TRANSACTION');
try {
while ($row = gather_data()) {
$db->query('INSERT INTO `table` (`foo`,`bar`) VALUES(?,?)', ...);
}
$db->query('COMMIT');
} catch(Exception $e) {
$db->query('ROLLBACK');
}
Wenn hier gather_data()
nur krächzend (mit E_USER_ERROR
oder die()
) eine Chance besteht, hätten frühere INSERT
Aussagen es in Ihre Datenbank geschafft, selbst wenn dies nicht gewünscht wäre, und Sie hätten keine Kontrolle darüber, was als nächstes passieren soll.