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)

H?ufige Probleme und L?sungen für den variablen PHP -Umfang umfassen: 1. Die globale Variable kann innerhalb der Funktion nicht zugegriffen werden, und sie muss bei der Verwendung des globalen Schlüsselworts oder Parameters übergeben werden. 2. Die statische Variable wird statisch deklariert und nur einmal initialisiert und der Wert wird zwischen mehreren Aufrufen beibehalten. 3.. Hyperglobale Variablen wie $ _get und $ _post k?nnen direkt in jedem Bereich verwendet werden, aber Sie müssen auf eine sichere Filterung achten. 4. Die anonymen Funktionen müssen über das Schlüsselwort verwenden, und wenn Sie externe Variablen ?ndern, müssen Sie eine Referenz übergeben. Das Beherrschen dieser Regeln kann dazu beitragen, Fehler zu vermeiden und die Code -Stabilit?t zu verbessern.

Um PHP -Datei -Uploads sicher zu verarbeiten, müssen Sie die Quelle und die Type und die Eingabe des Dateinamens und des Pfades überprüfen, Serverbeschr?nkungen festlegen und Mediendateien zweimal verarbeiten. 1. überprüfen Sie die Upload -Quelle, um CSRF durch Token zu verhindern, und erkennen Sie den realen MIME -Typ über die Finfo_file mithilfe der Whitelist -Steuerung. 2. Benennen Sie die Datei in eine zuf?llige Zeichenfolge um und bestimmen Sie die Erweiterung, um sie gem?? dem Erkennungstyp in einem Verzeichnis ohne Web zu speichern. 3. Die PHP -Konfiguration begrenzt die Hochladengr??e und das tempor?re Verzeichnis Nginx/Apache verbietet den Zugriff auf das Upload -Verzeichnis. 4. Die GD -Bibliothek stellt die Bilder neu, um potenzielle b?swillige Daten zu l?schen.

Es gibt drei g?ngige Methoden für den PHP -Kommentarcode: 1. Verwenden Sie // oder #, um eine Codezeile zu blockieren, und es wird empfohlen, // zu verwenden. 2. Verwenden Sie /.../, um Codebl?cke mit mehreren Zeilen zu wickeln, die nicht verschachtelt werden k?nnen, aber gekreuzt werden k?nnen. 3.. Kombinationskenntnisse Kommentare wie die Verwendung / if () {} / Um Logikbl?cke zu steuern oder um die Effizienz mit Editor -Verknüpfungsschlüssel zu verbessern, sollten Sie auf die Schlie?ung von Symbolen achten und das Verschachteln bei der Verwendung vermeiden.

AgneeratorinphpiSamemory-effizientes WaytoiterateOverlargedatasetsByyieldingValueatimeinsteadofReturningThemallatonce.1.GeneratorsusetheyieldKeywordtoproduktenvaluesonDemand, ReducingMemoryUsage.2.TheyareusefulforfulforfulfordlingBiglopploups, Lesebiglochen, Leselungen, Lesebigs, Leselung, oder

Der Schlüssel zum Schreiben von PHP -Kommentaren liegt in der Kl?rung des Zwecks und der Spezifikationen. Kommentare sollten "Warum" und nicht "was getan" erkl?ren, um Redundanz oder zu Einfachheit zu vermeiden. 1. Verwenden Sie ein einheitliches Format wie Docblock (/*/) für Klassen- und Methodenbeschreibungen, um die Lesbarkeit und die Kompatibilit?t der Werkzeuge zu verbessern. 2. Betonen Sie die Gründe für die Logik, z. B. warum JS -Sprünge manuell ausgeben müssen. 3. Fügen Sie eine übersichtsbeschreibung vor komplexem Code hinzu, beschreiben Sie den Prozess in Schritten und helfen Sie, die Gesamtidee zu verstehen. V. Gute Anmerkungen k?nnen die Kommunikationskosten senken und die Effizienz der Code -Wartung verbessern.

In PHP k?nnen Sie quadratische Klammern oder lockige Klammern verwenden, um Zeichenfolgenspezifikationsspezifische Indexzeichen zu erhalten, aber quadratische Klammern werden empfohlen. Der Index startet von 0 und der Zugriff au?erhalb des Bereichs gibt einen Nullwert zurück und kann keinen Wert zugewiesen; MB_SUBSTR ist erforderlich, um Multi-Byte-Zeichen zu verarbeiten. Zum Beispiel: $ str = "Hallo"; echo $ str [0]; Ausgabe H; und chinesische Zeichen wie Mb_Substr ($ str, 1,1) müssen das richtige Ergebnis erzielen. In den tats?chlichen Anwendungen sollte die L?nge der Zeichenfolge vor dem Schleifen überprüft werden, dynamische Zeichenfolgen müssen für die Gültigkeit verifiziert werden, und mehrsprachige Projekte empfehlen, Multi-Byte-Sicherheitsfunktionen einheitlich zu verwenden.

Toinstallphpquickly, usexampponwindowsorhomebrewonmacos.1.onwindows, download undInstallxampp, SelectComponents, Startapache und PlaceFilesinhtdocscs.2.Anternativ, manuellinstallphpfrfr

Tolearnphpeffectival, startbysettingupalocalerverenVironmentusexs -LikexamppandacodeeditorikevScode.1) InstallxamppForapache, MySQL und Php.SeacodeeditorForsyntaxSupport.3) testyourscludingveliktingveliktelaThbiliodble.Neclyble.NektFile
