Was ist der Unterschied zwischen Fehler und Ausnahme in PHP?
Die meisten Informationen zum Unterschied zwischen Fehler und Ausnahme im Internet werden in Java erklärt. Es scheint, dass der Ausnahmebehandlungsprozess von PHP dem von Java ähnelt, um den Unterschied und die Erfassung von Fehlern und Ausnahmen zu lernen in PHP. Freunde, die es brauchen, können darauf verweisen.
Einen Teil des JSON-Parsing-Codes geschrieben. Da die Datenquelle nicht garantiert JSON ist, kann das Parsen fehlschlagen. Der json_decode von PHP meldet jedoch keinen Fehler, wenn er auf eine Zeichenfolge stößt, die nicht analysiert werden kann, und gibt direkt nichts zurück. Und selbst wenn es analysiert werden kann, kann ich nicht glauben, dass die darin enthaltenen Felder immer konsistent sind. Daher muss nicht nur festgestellt werden, ob es in JSON geparst werden kann, sondern auch, ob Felder fehlen. Aus Faulheit möchte ich zum Beispiel nur Ausnahmen abfangen, um
Versuch, die Eigenschaft eines Nichtobjekts abzurufen
Trying to get property of non-object
但是,下面的 try catch 怎么也捕获不到异常
try { // Code that may throw an Exception or Error. } catch (\Exception $t) { // Handle exception }
Google 了一下,才知道,PHP 中除了 Exception 还有 Error 的概念,而 Trying to get property of non-object,很不幸就属于 Error。
PHP 中 error 与 exception 的区别
看了几篇关于 PHP error 和 exception 区别的介绍文章,感觉都没有说到点上。我突然想,我为啥一定要知道他们的区别,因为我觉得这个设计是有问题的。例如,PHP5 时代,try catch 只能捕获 Exception,而不能捕获 Error。我非常不能理解 PHP 5 这种设计的意义是什么?而 PHP7 的处理方式,说明了我的观点是正确的。所以,我就没有兴趣去深究其起初的设计思路了。
PHP 7 的新特性
From now on, most of the errors are reported through the exception class Error.
interface Throwable |- Error implements Throwable |- ArithmeticError extends Error |- DivisionByZeroError extends ArithmeticError |- AssertionError extends Error |- ParseError extends Error |- TypeError extends Error |- ArgumentCountError extends TypeError |- Exception implements Throwable |- ClosedGeneratorException extends Exception |- DOMException extends Exception |- ErrorException extends Exception |- IntlException extends Exception |- LogicException extends Exception |- BadFunctionCallException extends LogicException |- BadMethodCallException extends BadFunctionCallException |- DomainException extends LogicException |- InvalidArgumentException extends LogicException |- LengthException extends LogicException |- OutOfRangeException extends LogicException |- PharException extends Exception |- ReflectionException extends Exception |- RuntimeException extends Exception |- OutOfBoundsException extends RuntimeException |- OverflowException extends RuntimeException |- PDOException extends RuntimeException |- RangeException extends RuntimeException |- UnderflowException extends RuntimeException |- UnexpectedValueException extends RuntimeException
Von nun an werden die meisten Fehler über die Ausnahmeklasse Error gemeldet.
Das heißt, ab PHP 7 werden Error und Exception beide von Throwable geerbt .
Aus der Vererbungsbeziehung von Throwable können wir ersehen, dass Fehler und Ausnahme auf derselben Beziehungsebene stehen.
try { // Code that may throw an Exception or Error. } catch (\Throwable $t) { // Handle exception }
Erfassen Sie die Methode des Versuchs, Eigentum von Nicht-Objekten zu erhalten.
try { // Code that may throw an Exception or Error. } catch (\Throwable $t) { // Executed only in PHP 7, will not match in PHP 5.x } catch (\Exception $e) { // Executed only in PHP 5.x, will not be reached in PHP 7 }
Kompatibel mit den Schreibmethoden PHP 5 und PHP 7.
{ public function getMessage(): string; // Error reason public function getCode(): int; // Error code public function getFile(): string; // Error begin file public function getLine(): int; // Error begin line public function getTrace(): array; // Return stack trace as array like debug_backtrace() public function getTraceAsString(): string; // Return stack trace as string public function getPrevious(): Throwable; // Return previous `Trowable` public function __toString(): string; // Convert into string }
Einige integrierte Methoden Ausnahme
Zum Beispiel
Fehlercodedatei, Zeilennummer, spezifische Fehlermeldung, Fehlertyp
Verwenden Sie eine präzisere Erfassung oder eine umfassendere Erfassung
Oder BewertungssituationZum Beispiel die einzigartige Indexausnahme von MySQL, ich bin an eine präzise Erfassung gewöhnt . Weil es eine besondere Handhabung erfordert.
🎜In den meisten anderen Fällen denke ich, dass wir Throwable einfach im Großen und Ganzen erfassen. Der Grund dafür ist, dass Try Catch normalerweise zum Ignorieren von Ausnahmen verwendet wird, z. B. einige Ausnahmen mit geringer Wahrscheinlichkeit, die sich nicht auf die Logik auswirken. Es besteht keine Notwendigkeit, damit umzugehen, sodass die spezifische Ausnahme nicht allzu wichtig ist, solange das Protokoll aufgezeichnet wird. 🎜🎜Empfohlenes Lernen: 🎜php-Video-Tutorial🎜🎜Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Fehler und Ausnahme in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

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

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

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

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



PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

CakePHP ist ein Open-Source-MVC-Framework. Es erleichtert die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich. CakePHP verfügt über eine Reihe von Bibliotheken, um die Überlastung der häufigsten Aufgaben zu reduzieren.

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet
