Heim Backend-Entwicklung PHP-Problem Was ist der Unterschied zwischen Fehler und Ausnahme in PHP?

Was ist der Unterschied zwischen Fehler und Ausnahme in PHP?

Jun 23, 2021 pm 04:19 PM
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.

Was ist der Unterschied zwischen Fehler und Ausnahme in PHP?

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 abzurufenTrying to get property of non-object

但是,下面的 try catch 怎么也捕获不到异常

try {
    // Code that may throw an Exception or Error.
} catch (\Exception $t) {
    // Handle exception
}
Nach dem Login kopieren

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.

Der folgende Versuch „catch“ kann jedoch keine Ausnahmen abfangen

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
Nach dem Login kopieren

Nach der Suche bei Google Ich habe herausgefunden, dass es in PHP zusätzlich zu „Exception“ auch das Konzept „Error“ gibt und der Versuch, eine Eigenschaft eines Nichtobjekts abzurufen, leider unter „Error“ fällt.

Der Unterschied zwischen Fehler und Ausnahme in PHP

Ich habe mehrere Einführungsartikel über den Unterschied zwischen Fehler und Ausnahme in PHP gelesen, aber ich habe das Gefühl, dass sie den Punkt nicht berührt haben. Ich dachte plötzlich, warum muss ich den Unterschied zwischen ihnen kennen, weil ich denke, dass mit diesem Design etwas nicht stimmt. Beispielsweise kann try Catch in der PHP5-Ära nur eine Ausnahme, aber keinen Fehler abfangen. Ich kann wirklich nicht verstehen, was dieses Design von PHP 5 bedeutet? Die Art und Weise, wie PHP7 damit umgeht, zeigt, dass mein Standpunkt richtig ist. Daher habe ich kein Interesse daran, mich mit seinen ursprünglichen Designideen zu befassen.

Neue Funktionen von PHP 7

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
}
Nach dem Login kopieren

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
}
Nach dem Login kopieren

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
}
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

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.

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

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

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

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

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

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

CakePHP erstellt Validatoren CakePHP erstellt Validatoren Sep 10, 2024 pm 05:26 PM

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

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

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-Kurzanleitung CakePHP-Kurzanleitung Sep 10, 2024 pm 05:27 PM

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.

Wie analysiert und verarbeitet man HTML/XML in PHP? Wie analysiert und verarbeitet man HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

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

See all articles