Ich kenn es nur von Perl und da ist die() ein probates Mittel und Fehler mitzuteilen und diese lassen sich mittles $SIG{__DIE__} = sub {} auch abfangen. Genau wie warn. Damit ist eine sehr vielschichtige Fehlerdiagnose möglich, die sich sogar im produktiv Einsatz benutzen läßt
Das sieht mir aber eher nur nach einem Diagnosewerzeug statt nach einer geplanten Reaktion auf vorhersehbare Fehler aus.
Kann sein, dass ich nicht richtig gelesen habe worum es ging.
Ich möchte natürlich hier nicht propagieren die() für alle Arten von vorhersehbaren Fehlern zu verwenden, in dem Fall ist eine ordentliche Prüfung von Rückgabewerten und eine entsprechende Behandlung natürlich sinnvoller.
(Dass eine Datenbank mal nicht erreichbar ist, ist beispielsweise ein vorhersehbarer Fehler.)
Naja, und durchaus einer, der zum Abbruch eines Skriptes führen könnte. Ohne Daten sind die meisten Sachen nicht mehr sinnvoll. D.h. ein die() das eine HTML Fehlerseite ausgibt und an eine Mail an den Admin verschickt, wäre hier die richtige Reaktion (es sei denn man hat mehrere DB Server, es gäbe natürlich auch die Möglichkeit es nochmals zu versuchen, was ich aber bei meinem Perl Skripten nicht machen würde, da dort oft die Laufzeit so beschränkt ist, dass das Skript aus diesem Grund abgebrochen werden könnte)
Ziel sollte immer sein, dass ein Script an seinem Ende ankommt. Dabei darf es gelegentlich Umwege nehmen, auch wenn diese die Hauptattraktion umfahren. Das ist immer noch besser als mit Motorschaden auf der Strecke liegenzubleiben.
Ja sicher, bei weniger fatalen Problemen ist das sicher möglich und sinnvoll.
Aber du hast recht, die() ist natürlich in erster Linie zu Diagnosezwecke vorhanden, dient also eher dem Programmierer Fehler zu erkennen und vermeiden und nicht um dem Anwender falsche Eingabe oder andere Bedienungsfehler u die Ohren zu hauen.
ich lass mir z.b. die die() Meldungen als e-mail schicken
set_error_handler()... Diese Funktion wird bei jedem Auftreten eines PHP-Fehlers aufgerufen. Der Programmablauf wird dabei aber nicht abgebrochen. Nach Ende der ErrorHandler-Funktion geht es weiter im Kontext des Hauptscripts.
Was natürlich dem die() aufruf entgegen spricht, es geht ja gerade darum Folgefehler zu vermeiden ansonsten würde man ja nicht sterben wollen und eben Programmierfehler zu erkennen.
Struppi.