Kernpunkte
- PHP -Ausnahme ist eine spezielle Klasse, die geworfen und gefangen werden kann, um unerwartete Ereignisse anzuzeigen. Im Gegensatz zu nicht wiedererlebbaren Fehlern sollen Ausnahmen durch den Aufrufcode und die Ausführung der Ausführung nach oben bearbeitet werden, bis sie gefangen werden.
- Der Unterschied zwischen PHP -Fehlern und Ausnahmen besteht darin, dass die Fehler unwiderruflich sind und in der Hauptausführungsschleife auftreten, was darauf hinweist, dass ein Problem mit der Stabilit?t des Codes oder der Umgebung besteht. Ausführungsschleife und bedeutet nicht, dass das System instabil ist.
- Nicht alle nicht erfolgreichen Situationen erfordern, dass Ausnahmen geworfen werden. Ausnahmen sollten nur geworfen werden, wenn sie die Ausführung wirklich nicht fortsetzen k?nnen. Dies bedeutet, dass eine Aktion, die kein normaler Betrieb oder Standard ist, eine Abnormalit?t, von normalen und erwarteten Situationen abweicht.
- über eine allgemeine
Exception
übereinstimmt zu sagen, dass es ein "Problem" gibt, und der Code hat keine Ahnung, was los ist. Stattdessen sollte immer eine benutzerdefinierte Ausnahme geworfen werden, um den Anrufcode über die aktuelle Situation zu informieren, wodurch eine feink?rnige Kontrolle über das geschieht, was geschieht. - Der globale Capture -Block ist der h?chste Niveau des Capture -Blocks, und alle Ausnahmen, die auf dieses Niveau sprudeln, müssen erfasst werden. Es sollte der einzige allgemeine Ausnahmebehandler im Produktionscode sein. Andere Handler müssen spezifisch sein und auf Ausnahmen beschr?nkt sein, die es wei?, wie man umgeht und verantwortlich ist.
Php 5 führt einen Ausnahmebehandlungsmechanismus ein, eine spezielle Klasse, die (im Gegensatz zu geworfenen Fehlern) geworfen und gefangen werden kann, um unerwartete Ereignisse anzuzeigen. Im Gegensatz zu Fehlern sollen Ausnahmen von dem aufrufenden Code und dem Aufruf nach oben der Ausführungskette nach oben verarbeitet werden, bis sie gefangen werden. Sobald eine Ausnahme ausgeliefert ist, wird der Code im aktuellen Bereich nicht mehr ausgeführt (so wird keine Zeile nach der Ausführung der throw
-Antage Ausnahmebehandler von der Sprache). Die Codeausführung wird nur dann fortgesetzt, wenn die Ausnahme gefangen wird. Dieser Artikel soll keine Ausnahmen auf der Einstiegsebene erl?utern, sondern einige Ratschl?ge zur besseren Nutzung von Ausnahmen geben. Wenn Sie noch nie Ausnahmen verwendet haben, müssen Sie m?glicherweise das PHP-Handbuch konsultieren oder das von meinen Freunden geschriebene Buch "PHP Master: Writing Speopded Code" lesen, das hervorragend erkl?rt
Fehler ist keine Ausnahme
Sie haben vielleicht über Ausnahmen erfahren, aber Sie wundern sich vielleicht über den Unterschied zwischen einem PHP -Fehler und einer (benutzerdefinierten) Ausnahme. Die Logik ist eigentlich sehr einfach: Der Fehler ist nicht einverwirkbar, tritt in der Hauptausführungsschleife auf und zeigt die Stabilit?t der Umgebung an. Wenn Sie beispielsweise versuchen, auf den skalaren Wert als Array zuzugreifen und E_NOTICE
zu erh?hen, bedeutet dies ein Problem mit Ihrem Code. Es gibt keine Garantie dafür, dass die fortgesetzte Ausführung sicher ist. Diese Bedingung kann w?hrend der Ausführung nicht korrigiert werden. Wenn der T_IF
durch ein unerwartetes E_PARSE
vom Parser entdeckt wird, werden Sie verstehen, wie sich dies auf die Stabilit?t von Dingen auswirkt. Andererseits sind Ausnahmen wiederherstellbar, k?nnen (und normalerweise) au?erhalb der Hauptausführungsschleife auftreten und geben die Stabilit?t des Systems nicht an. Es ist eine Komponente, die sagt: "Ich kann Ihre Anfrage mit der angegebenen Eingabe nicht ausfüllen, damit Sie diese Informationen nach Belieben verarbeiten k?nnen." Daher kann die angegebene Anweisung mit dem aktuellen Wert nicht fertiggestellt werden. Dies bedeutet nicht, dass Ihre Umgebung instabil ist, sondern nur, dass Ihr Code die L?nge des Werts durch Polstant oder Abschneiden anpassen muss. Ihr Code kann diese Ausnahme erfassen, den Wert aktualisieren und erneut versuchen. LengthException
Nicht alle Ausnahmen sind Ausnahmen
Dies ist eine der schwierigsten Fragen zu beantworten: Was genau muss eine Ausnahme ausgel?st werden? Natürlich muss Ihre Ausnahme drei Regeln im vorherigen Absatz einhalten. Ausnahmen zu werfen, wenn es auf eine besch?digte Erinnerung sto?e, ist eine sehr schlechte Praxis. Ihr Code sollte stattdessen einen Fehler werfen, damit PHP so schnell wie m?glich abbrechen kann, da sich die Umgebung als unsicher erweist, um die Ausführung fortzusetzen. Selbst wenn Fehler nicht erforderlich sind, ist für alle nicht erfolgreichen Situationen keine Ausnahme erforderlich. Das hei?t: Nicht alle erfolglosen Situationen sind Ausnahmen. Das Wort "abnormal" bezieht sich auf eine Aktion, die kein normaler Betrieb oder Standard ist, und auf eine Abnormalit?t, die von normalen und erwarteten Situationen abweicht. Ein ehemaliger Kollege sagte mir einmal beim Abendessen, dass der XML/RPC-Service, das ihr Unternehmen verwendet, das Rückgrat aller ?ffentlichen Operationen. Der Architekt lernte dann von Ausnahmen und ihrer Bequemlichkeit bei der Angabe von nicht erfolgreichen Zust?nden. Diese S?ule bietet zus?tzlich zu anderen Funktionen einzelne Sign-On-Funktionen. Anstatt direkt auf die Datenbank zugreifen zu k?nnen, quer wird der XML/RPC -Dienst an, der dann basierend auf dem zentralen Datenspeicher reagiert, der alle Webanwendungen bedient. Wenn gültige Anmeldeinformationen bereitgestellt werden, wird ein erfolgreicher Status zurückgegeben. Wenn ein Problem auftritt, wird eine Ausnahme geworfen und eine Nachricht angezeigt, die den Grund für den Fehler angibt. Einfach zu erfassen, k?nnen Sie die Nachricht dem Benutzer mit einer auff?lligen, gl?nzenden Fehlermeldung anzeigen. Aber stellt der Benutzer einen falschen Benutzernamen und/oder ein Passwort, das wirklich von den Erwartungen abweicht? In meinem Projekt sind die Benutzer, die ich bew?ltige, nicht perfekt, sie werden Dinge typo oder vergessen. Das Erhalten falscher Anmeldeinformationen ist sehr h?ufig, noch h?ufiger als gültige Anmeldeinformationen. überprüfungsnachweise sind das erwartete Verhalten der Anmeldung im System. In diesem Fall sollte der XML/RPC -Dienst einen Status zurückgeben, der angibt, ob die überprüfung erfolgreich ist oder nicht. Obwohl die Anmeldeinformationen scheitern, wird der überprüfungsprozess selbst immer noch erfolgreich ausgeführt. Wenn der überprüfungsprozess nicht korrekt ausgeführt wird, gibt es andere Probleme. Vielleicht ist der Datenspeicher unzug?nglich oder etwas anderes. Es ist sehr ungew?hnlich, dass Anmeldesysteme keine Verbindung zu ihrem Datenspeicher herstellen k?nnen, da es nicht ohne Datenspeicher ausgeführt werden kann. Dies erfordert daher eine Ausnahme. Hinweis: Einige Personen k?nnen argumentieren, dass das Anmeldesystem keine Verbindung zum Datenspeicher herstellt, dass die Umgebung instabil ist und daher einen Fehler aufnehmen sollte. Die Anmeldung im System ist jedoch nicht für die Erh?hung eines Fehlers für die Datenspeicherung verantwortlich. Wenn der Datenspeicheranschluss/Wrapper für notwendig h?lt, sollte ein Fehler erh?ht werden. Im Allgemeinen k?nnen Sie sich Ausnahmen als Situationen vorstellen, in denen Entwickler einsteigen, sehen und umgehen müssen. Der Code, der mit dem Ausnahme -Szenario auftritt, kann dies nicht alleine tun. Dies ist wahrscheinlich, dass der Entwickler den Code und die Art und Weise, wie er damit umgeht, geschaut hat, es zulassen, wenn es passiert. Senden Sie nicht alle Ausnahmen an das Netzwerkbetriebszentrum. Griff, was Sie k?nnen und sollten, und die Ausnahme wird nur ausgel?st, wenn sie die Ausführung wirklich nicht fortsetzen kann.
"Problem"
Vor ein paar Jahren, als ich durch Europa wanderte, bin ich auf einen unvergesslichen Anblick an einem Bahnhof in Griechenland gesto?en. Einer der Schlie?fachbereiche sah aus, als würde eine Bombe explodieren, mit Türen auf dem Boden verstreut, halb an Scharnieren h?ngen oder zerschlagen. Ich erfuhr sp?ter, dass sie den Schlie?fachbereich entfernt haben, aber es ist erw?hnenswert, wie sie dem Kunden mitgeteilt haben, dass dieser Bereich deaktiviert wurde. Es gab viel Klebeband im mittleren Teil, wobei ein Stück Papier es mit den Worten "Problem" einfügt. Technisch ist dies v?llig korrekt. Mit dem Schlie?fach stimmte offensichtlich etwas nicht und die Situation wurde behandelt, indem es dem Kunden mitgeteilt wurde. Sie werden es vielleicht interessant finden, aber tats?chlich sehen Sie dies oft in Ihrem Code. Wenn Sie nur Exception
werfen, sagen Sie im Grunde "Problem" und der Code hat keine Ahnung, was los ist. Obwohl Exception
die Basisklasse für jede Ausnahme ist, k?nnen Sie sie mit Ihrem eigenen Typ erweitern. Eine breitere Sammlung von Ausnahmen findet sich in der SPL -Bibliothek, aber dies ist weit entfernt von der Grenze. Wenn Sie sich wichtige PHP -Frameworks wie Zend Framework oder Symfony ansehen, werden Sie feststellen, dass sie für fast alle unterschiedlichen Situationen benutzerdefinierte Ausnahmen verwenden. Es ist ein wenig umst?ndlich, all diese Dateien zu schreiben, damit sie dynamisch geladen und alle verschiedenen Typen beibehalten werden k?nnen. Dies bietet jedoch eine feink?rnige Kontrolle darüber, was für das Framework und die Verbraucher dieses Frameworks geschieht. Wenn Sie nur Exception
werfen, k?nnen Sie nur sicher sein, dass etwas nicht stimmt und Sie genauso gut aufgeben k?nnen. Dies bedeutet, dass Sie Ausnahmen so verwenden, wie sie Fehler sind, die Erfassungsbl?cke als stille Operatoren verwenden und nur die Hoffnung aufgeben, dass jemand diese Situation auf irgendeine Weise korrigieren kann.
Global Capture
Wenn es eine schlechte Idee ist, nicht-kundenspezifische Ausnahmen zu verwenden und alle m?glichen Ausnahmen zu fangen, warum erlaubt die Sprache dann überhaupt? Es gibt eine Ausnahme von der Regel, die immer eine bestimmte Ausnahme verwendet und f?ngt, dh die globale Capture -Regel. Ein globaler Capture -Block ist der Aufnahmeblock auf h?chster Ebene und muss alle Ausnahmen erfassen, die auf diese Ebene sprudeln. PHP selbst enth?lt eine (haben Sie die "t?dliche Fehler: Unbefugte Ausnahme in ..." gesehen?), Aber Sie k?nnen ihn mit einem benutzerdefinierten Handler überschreiben, um als Fallback zu dienen. Sie k?nnen diesen Handler mit der Funktion set_exception_handler()
festlegen, damit Sie ihn so machen k?nnen, wie Sie m?chten, und Ihrem PHPMD -Regelsatz eine Regel hinzufügen, die Zeilen wie "catch (Exception $e) {
" verbietet. Dies ist der einzige Grund für einen allgemeinen Ausnahmebehandler, der im Produktionscode gefunden werden sollte, der jede Instanz der Exception
-Klasse erfasst, die noch nicht gefangen wurde. Andere Handler müssen spezifisch sein und auf Ausnahmen beschr?nkt sein, die es wei?, wie man umgeht und verantwortlich ist. Hier vorsichtig zu sein, eine handtriebbare Ausnahme einmal sprudeln zu lassen (und dann in Code zu reparieren), ist definitiv viel besser, als zu viel zu fangen und als stiller Operator zu fungieren.
Zusammenfassung
Kurz gesagt, eine Ausnahme wird nur ausgel?st, wenn Ihr Code die angeforderte Anweisung mit der angegebenen Eingabe nicht ausfüllen kann, und stellt immer eine benutzerdefinierte Ausnahme aus Fang nur Ausnahmen, die Sie verarbeiten k?nnen und sollten. Dies macht Ihre Komponenten weniger wie schwarze K?stchen (benutzerdefinierte Ausnahmen) und verringert die M?glichkeit, dass Entwickler, die Ihre Komponenten integrieren, Ihren Code ?ndern müssen (keine Ausnahmen fangen, die Sie nicht sollten). Wir sagen unseren Kunden/Managern immer spezifisch, aber wir sollten auch spezifisch sein!
(Bild aus Fotolien)
H?ufig gestellte Fragen zum Umgang mit PHP -Ausnahme
- Was ist der Zweck des PHP -Ausnahmehandlings?
- Wie funktioniert der Try-Catch-Block in PHP?
- Welche Rolle spielt schlie?lich Bl?cken in der PHP -Ausnahmehandhabung?
- Wie erstelle ich eine benutzerdefinierte Ausnahme in PHP?
- Was ist der Unterschied zwischen Ausnahmen und Fehlern in PHP?
- Wie behandle ich mehrere Ausnahmen in PHP?
- Kann ich eine Ausnahme in PHP zurückwerfen?
Ja, Sie k?nnen die Ausnahme in PHP wiederw?gen. Dies ist sehr nützlich, wenn Sie irgendwie mit Ausnahmen umgehen m?chten, aber ein h?heres Ma? an Ausnahme -Handler aufnehmen m?chten. Um die Ausnahme wiederzuwischen, verwenden Sie einfach die Wurfanweisung im Fangblock.
- Wie zeichne ich Ausnahmen in PHP auf?
In PHP k?nnen Sie Ausnahmen protokollieren, indem Sie die Funktion der Fehler_log im Catch -Block verwenden. Auf diese Weise k?nnen Sie Informationen über die Ausnahme, einschlie?lich ihrer Nachrichten und Stapelspuren, in die angegebene Protokolldatei protokollieren.
- Was ist PDOException in PHP?
pdoException ist eine Ausnahme, die ausgeworfen wird, wenn ein Fehler in einer PDO -Operation auftritt. PDO (PHP -Datenobjekt) ist eine Datenbankabstraktionsschicht, die eine konsistente Schnittstelle zum Zugriff auf Datenbanken in PHP bietet. PDOException bietet Informationen zu Fehlern, einschlie?lich SQLState -Fehlercodes und Fehlermeldungen für den Datenbanktreiber.
- Wie kann ich mit nicht erfassten Ausnahmen in PHP umgehen?
In PHP k?nnen Sie unbekannte Ausnahmen verarbeiten, indem Sie eine benutzerdefinierte Ausnahmebehandlerfunktion definieren und dann als Standard -Ausnahmebehandler mithilfe der Funktion set_Exception_handler einstellen. Diese Funktion wird aufgerufen, wenn eine Ausnahme, die nicht vom Try-Catch-Block erwischt wird, geworfen wird.
Das obige ist der detaillierte Inhalt vonPHP Master | Au?ergew?hnliche Ausnahmen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

TosecurelyHandleAuthenticationAuthorizationInphp, folge theSteps: 1.Alwayshashpasswordswithpassword_hash () und password_verify (), usePreeParedStatementStopreventsQlinjapitca und StoreuserDatain $ _SessionArtelogin.2.ImplementscaChescescesc

Um Datei -Uploads in PHP sicher zu verarbeiten, besteht der Kern darin, Dateitypen zu überprüfen, Dateien umzubenennen und die Berechtigungen zu beschr?nken. 1. Verwenden Sie Finfo_File (), um den realen MIME -Typ zu überprüfen, und nur bestimmte Typen wie Bild/JPEG sind zul?ssig. 2. Verwenden Sie Uniqid (), um zuf?llige Dateinamen zu generieren und sie im Root-Verzeichnis ohne Web zu speichern. 3.. Begrenzen Sie die Dateigr??e durch Php.ini- und HTML -Formulare und setzen Sie die Verzeichnisberechtigungen auf 0755; 4. Verwenden Sie Clamav, um Malware zu scannen, um die Sicherheit zu verbessern. Diese Schritte verhindern effektiv Sicherheitslücken und stellen sicher, dass der Upload -Prozess des Datei -Uploads sicher und zuverl?ssig ist.

In PHP ist der Hauptunterschied zwischen == und == die Strenge der Typprüfung. == Die Konvertierung des Typs wird vor dem Vergleich durchgeführt, beispielsweise 5 == "5" gibt true zurück und === fordert an, dass der Wert und der Typ gleich sind, bevor True zurückgegeben wird, z. B. 5 === "5" gibt false zurück. In den Nutzungsszenarien ist === sicherer und sollte zuerst verwendet werden, und == wird nur verwendet, wenn die Typumwandlung erforderlich ist.

Die Methoden zur Verwendung grundlegender mathematischer Operationen in PHP sind wie folgt: 1. Additionszeichen unterstützen Ganzfaktoren und Floating-Punkt-Zahlen und k?nnen auch für Variablen verwendet werden. String -Nummern werden automatisch konvertiert, aber nicht für Abh?ngigkeiten empfohlen. 2. Subtraktionszeichen verwenden - Zeichen, Variablen sind gleich, und die Typumwandlung ist ebenfalls anwendbar. 3. Multiplikationszeichen verwenden * Zeichen, die für Zahlen und ?hnliche Zeichenfolgen geeignet sind; 4. Division verwendet / Zeichen, die vermeiden müssen, durch Null zu dividieren, und beachten Sie, dass das Ergebnis m?glicherweise schwimmende Punktzahlen sein kann. 5. Die Modulzeichen k?nnen verwendet werden, um ungerade und sogar Zahlen zu beurteilen, und wenn negative Zahlen verarbeitet werden, stimmen die Restzeichen mit der Dividende überein. Der Schlüssel zur korrekten Verwendung dieser Operatoren liegt darin, sicherzustellen, dass die Datentypen klar sind und die Grenzsituation gut behandelt wird.

Ja, PHP kann mit NoSQL -Datenbanken wie MongoDB und Redis durch bestimmte Erweiterungen oder Bibliotheken interagieren. Verwenden Sie zun?chst den MongoDBPHP -Treiber (installiert über PECL oder Composer), um Client -Instanzen zu erstellen und Datenbanken und Sammlungen zu betreiben, wobei Sie Insertion, Abfrage, Aggregation und andere Vorg?nge unterstützen. Zweitens verwenden Sie die Predis Library oder PHPREDIS-Erweiterung, um eine Verbindung zu Redis herzustellen, Schlüsselwerteinstellungen und -akquisitionen durchzuführen und PHPREDIS für Hochleistungsszenarien zu empfehlen, w?hrend Predis für die schnelle Bereitstellung bequem ist. Beide sind für Produktionsumgebungen geeignet und gut dokumentiert.

TostaycurrentwithPHPdevelopmentsandbestpractices,followkeynewssourceslikePHP.netandPHPWeekly,engagewithcommunitiesonforumsandconferences,keeptoolingupdatedandgraduallyadoptnewfeatures,andreadorcontributetoopensourceprojects.First,followreliablesource

PHPBECAMEPOPULARFORWebDevelopmentDuetoitSeaseoflearning, Seamlessintegrationwithhtml, weit verbreitete Hostingsupport, andalargeecosystemincludingFrameWorkelaravelandcmsplatformen -?hnliche WordPress.itexcelsinformlingsformen, Managingusesersions, Interacti

Tosettherighttimezoneinphp, usedate_default_timezone_set () functionAtthestartofyourScriptWithAvalididentifiersuchas'america/new_york'.1.usedate_default_timezone_set () beeanydate/timeFununtions.2.Alternativ, konfigurieren
