Ab PHP 7.4.13 ist meine Erfahrung, dass alle möglichen Fehler und Ausnahmen in einem Programm mit nur zwei Callback-Funktionen abgefangen werden können:
set_error_handler("ErrorCB");
set_exception_handler("ExceptCB");
ErrorCB meldet einfach seine Argumente auf beliebige Weise und ruft Exit() auf.
ExceptCB ruft "get"-Methoden für sein Ausnahmeargument auf und führt eine gewisse Logik aus, um festzustellen, wo sich die Datei, die Zeile und die Funktion befinden (fragen Sie mich, wenn Sie Einzelheiten erfahren möchten), und meldet die Informationen auf beliebige Weise und kehrt zurück.
Die einzige Notwendigkeit für try/catch ist, wenn Sie Fehler für bestimmten Code unterdrücken müssen, wenn @ oder isset() nicht ausreichen. Die Verwendung von try/catch für eine "Hauptfunktion" ohne das Setzen von Handlern schlägt fehl, da sie nicht alle Fehler abfängt.
Wenn jemand Code findet, der einen Fehler erzeugt, den dieser Ansatz nicht abfängt, lassen Sie es mich bitte wissen, und ich werde diese Antwort bearbeiten. Ein Fehler, den dieser Ansatz nicht abfangen kann, ist ein einzelnes {-Zeichen am Ende eines PHP-Programms; dies erzeugt einen Parse-Fehler, der erfordert, dass Sie Ihr Haupt-PHP-Programm über eine Include-Datei ausführen, die die Fehlerbehandlung enthält.
Ich habe keine Notwendigkeit für register_shutdown_function() gefunden.
Beachten Sie, dass alles, was mich interessiert, das Melden von Fehlern und das anschließende Beenden des Programms ist; ich muss mich nicht von Fehlern erholen - das wäre in der Tat eine viel schwierigere Frage.