Um PHP-Ausnahmeinformationen für die nachfolgende Verarbeitung zu sammeln, richten Sie im Allgemeinen einen Ausnahmehandler ein oder erben die Basisklasse, um eine Ausnahmeunterklasse zu schreiben. Ich verwende hier einen registrierten Ausnahmehandler. Ich bin auf mehrere Probleme gestoßen, die ich nicht ganz verstand
1: Nachdem eine Ausnahme ausgelöst wurde, wird das Programm beendet, aber ich kann mich vage erinnern, dass das Programm unter bestimmten Umständen nicht beendet wird, nachdem eine Ausnahme ausgelöst wurde. Bitte geben Sie einige Informationen an . einmal.
2: Wenn das Codesegment nach der Registrierung des Ausnahmehandlers versucht, die Ausnahme auszulösen, wird die registrierte Funktion nicht ausgeführt. Ich weiß nicht mehr genau, warum dies der Fall ist. Bitte geben Sie mir weitere Informationen.
3: Was das Design von Ausnahmen betrifft, so habe ich im Allgemeinen den Ausnahmehandler registriert und dann diese Funktion zum Organisieren und Sammeln verwendet. Diese Funktion wird nicht ausgeführt, daher weiß ich nicht, wie ich dieses Design zum Sammeln von Protokollen umsetzen soll. Bitte geben Sie mir etwas Populärwissenschaft.
Um PHP-Ausnahmeinformationen für die nachfolgende Verarbeitung zu sammeln, richten Sie im Allgemeinen einen Ausnahmehandler ein oder erben die Basisklasse, um eine Ausnahmeunterklasse zu schreiben. Ich verwende hier einen registrierten Ausnahmehandler. Ich bin auf mehrere Probleme gestoßen, die ich nicht ganz verstand
1: Nachdem eine Ausnahme ausgelöst wurde, wird das Programm beendet, aber ich kann mich vage erinnern, dass das Programm unter bestimmten Umständen nicht beendet wird, nachdem eine Ausnahme ausgelöst wurde. Bitte geben Sie einige Informationen an . einmal.
2: Wenn das Codesegment nach der Registrierung des Ausnahmehandlers versucht, die Ausnahme auszulösen, wird die registrierte Funktion nicht ausgeführt. Ich weiß nicht mehr genau, warum dies der Fall ist. Bitte geben Sie mir weitere Informationen.
3: Um die Erfassung einiger Protokolle zu erleichtern, habe ich im Allgemeinen den Ausnahmehandler registriert und dann diese Funktion zum Organisieren und Sammeln verwendet. Diese Funktion wird nicht ausgeführt, daher weiß ich nicht, wie ich dieses Design zum Sammeln von Protokollen umsetzen soll. Bitte geben Sie mir etwas Populärwissenschaft.
Die E-Methode von thinkphp ist eine Ausnahme, die hauptsächlich zum Auslösen von Fehlern und zum direkten Beenden verwendet wird.
Ich weiß bereits, wie man try verwendet. Ich muss nur Ausnahmen abfangen und aufschreiben, was ich nach der Ausnahme tun muss.
<code><?php try { $mgr = new CommandManager(); $cmd = $mgr->getCommandObject("realcommand"); $cmd->execute(); } catch (Exception $e) { print $e->getMessage(); exit(); } ?></code>
1. Was ich bisher weiß ist, dass das Programm nicht beendet wird, wenn eine Ausnahme im Try Catch abgefangen wird.
2 Es gibt Anweisungen für set_Exception_handler im Handbuch
Legen Sie den Standard-Ausnahmehandler fest 🎜> wird für Ausnahmen verwendet, die nicht mit Try/Catch-Blöcken abgefangen werden. Ausnahmen werden abgebrochen, nachdem „Exception_handler“ aufgerufen wurde. 3. Da Catch die Ausnahme erfasst, kann der Ausnahmehandler die Ausnahme natürlich nicht im entsprechenden Codesegment erfassen.
Funktion _Exception_handler($Exception)
<code>{ $_error =& load_class('Exceptions', 'core'); $_error->log_exception('error', 'Exception: '.$exception->getMessage(), $exception->getFile(), $exception->getLine()); // Should we display the error? if (str_ireplace(array('off', 'none', 'no', 'false', 'null'), '', ini_get('display_errors'))) { $_error->show_exception($exception); } exit(1); // EXIT_ERROR } </code>
Exception ist ein vollständigerer Fehlerbehandlungsmechanismus. Im Vergleich zu Error verfügt Exception über eine umfassendere Stapelverarbeitungsmethode.
Dies legt auch fest, dass das Programm nach der Behandlung der Ausnahme nicht zur ursprünglichen Position zurückkehrt und die Ausführung fortsetzt (dies ist bei Fehlern in Ordnung).
Die Fehlerverarbeitung besteht darin, an der Stelle zu unterbrechen, an der der Fehler auftritt, zur Fehlerbehandlungsfunktion zu springen und dann dorthin zurückzukehren Interrupt nach Abschluss der Verarbeitung, damit die Ausführung fortgesetzt werden kann.
Bei der Ausnahmebehandlung wird der Stapel nach oben verschoben und das Programmsegment gefunden, das die Ausnahme abfangen kann, um die Ausnahme zu behandeln. Da der Stapel geleert wurde, ist eine Rückkehr zur ursprünglichen Ausführungsposition nicht mehr möglich.
Was Sie gesagt haben: Wenn Sie möchten, dass die Ausnahme den inneren Catch durchbricht und vom äußeren Catch abgefangen wird, können Sie throw $e im inneren Catch verwenden.