Heim  >  Artikel  >  Backend-Entwicklung  >  Benutzerdefinierte PHP-Ausnahme

Benutzerdefinierte PHP-Ausnahme

WBOY
WBOYOriginal
2024-08-29 13:06:10404Durchsuche

Der normale Ablauf eines Skripts stoppt, wenn ein Fehler auftritt, und eine Ausnahme kann verwendet werden, um ihn zu ändern. Ein Benutzer kann Ausnahmen gemäß den Anforderungen der Bibliothek, des Unternehmens oder unserer Anwendung individuell definieren, indem er die bereits in der PHP-Codebasis integrierte Ausnahmeklasse erweitert. Hier sehen wir die Eigenschaften und Mitglieder, die alle innerhalb der Reichweite der untergeordneten Klasse liegen, die von der integrierten Ausnahmeklasse abruft.

WERBUNG Beliebter Kurs in dieser Kategorie PHP-ENTWICKLER - Spezialisierung | 8-Kurs-Reihe | 3 Probetests

Starten Sie Ihren kostenlosen Softwareentwicklungskurs

Webentwicklung, Programmiersprachen, Softwaretests und andere

Im Folgenden werden die Dinge aufgeführt, die bei Auftreten einer Ausnahme auftreten:

  • Der aktuelle Stand des Codes wird zunächst gespeichert.
  • Der Ausnahmehandler setzt die Ausführung entweder im gespeicherten Zustand des Codes fort, beendet seine Ausführung oder setzt die Ausführung an einer anderen Stelle des Codes fort.

Teilen Sie uns mit, warum wir neben den integrierten auch bestimmte Ausnahmen anpassen müssen:

  • Wir können leicht genau erkennen, welche Klasse, Erweiterung oder Zeichenfolge die Ausnahme in der Hierarchie des Codes generiert.
  • Auf diese Weise kann der Entwickler die Probleme im Code leicht erkennen.
  • Es kann zum Branding bestimmter Bibliotheksausnahmen wie DOM, PDO usw. verwendet werden.
  • Wir können beliebig viele benutzerdefinierte Ausnahmen konfigurieren.

Syntax der benutzerdefinierten PHP-Ausnahme

Damit eine benutzerdefinierte Ausnahme ausgelöst wird, sollten wir einfach eine weitere Klasse aus der bereits integrierten Exception-Klasse erweitern.

namespace CustExcep;
class CustException extends \Exception { }

Da die obige CustException-Klasse jetzt erstellt wurde, können wir wie folgt eine benutzerdefinierte Ausnahme auslösen:

throw new \CustExcep\CustException('Insert an Exception message here');

Wir können dies auch nach Bedarf anpassen, um bestimmte Klasseneigenschaften wie Datei, Code, Zeile und ihre Nachricht zu überschreiben, oder indem wir die Methode __toString() verwenden, um diese Ausnahmenachricht in das Format zu zwingen, mit dem wir arbeiten müssen.

Arbeiten benutzerdefinierter Funktionen in PHP

Sehen wir uns die Funktionsweise dieser Funktion anhand einiger Beispiele an:

Beispiel #1

Code:

<?php
/**
* Here defining a class for custom exception
*/
class CustException extends Exception
{
// Here we are redefining the exception message so it is not optional
public function __construct($exmsg, $val = 0, Exception $old = null) {
// random code goes here
$exmsg = 'Default';
// ensure assignment of all values correctly
parent::__construct($exmsg, $val, $old);
}
// representing the custom string object
public function __toString() {
return __CLASS__ . ": [{$this->code}]: {$this->message}\n";
}
public function custFunc() {
echo "Insert any custom message here\n";
}
}
/**
* This class to test the exception
*/
class ExceptionTest
{
public $var;
const NO_EXCEPTION = 0;
const CUST_EXCEPTION = 1;
const DEF_EXCEPTION = 2;
function __construct($val = self::NO_EXCEPTION) {
switch ($val) {
case self::CUST_EXCEPTION:
// throw custom exception
throw new CustException('1 is considered as invalid', 5);
break;
case self::DEF_EXCEPTION:
// throw default one.
throw new Exception('2 is considered an invalid parameter', 6);
break;
default:
// Will not throw any exception and creates an object here
$this->var = $val;
break;
}
}
}
// Example 1
try {
$new = new ExceptionTest(ExceptionTest::CUST_EXCEPTION);
} catch (CustException $exp) { // This exception will be caught
echo "Test custom exception is caught\n", $exp;
$exp->custFunc();
} catch (Exception $exp) { // This is skipped
echo "Default exception is caught here\n", $exp;
}

Ausgabe:

Benutzerdefinierte PHP-Ausnahme

Erklärung:

  • In diesem Beispiel werden wir sehen, wie wir unsere Ausnahmen individuell auslösen können. Dazu definieren wir zunächst eine Klasse für diesen Zweck und definieren dabei die Ausnahmemeldung mithilfe eines Konstruktors neu, um sie nicht optional zu machen. Wir setzen die Ausnahmemeldung auf einen Standardtext. Hier sollten wir darauf achten, dass alle von uns verwendeten Parameter richtig zugeordnet sind. Dies führt zu Fehlern. Anschließend erstellen wir eine weitere Funktion namens custFunc() und definieren hier unsere benutzerdefinierte Ausnahmemeldung.
  • Wir verwenden die switch-Anweisung, um drei verschiedene benutzerdefinierte Ausnahmen für diese drei Werte zu definieren. Im Standardfall wird keine Ausnahme ausgelöst und das erforderliche Objekt erstellt.
  • Um dies auszuprobieren, versuchen wir, ein neues Objekt zu erstellen, indem wir den Wert als CUST_EXCEPTION übergeben. Hier rufen wir unsere zu Beginn definierte custFunc()-Methode auf. Dadurch wird die definierte Ausnahmemeldung abgerufen und angezeigt.

Beispiel #2

Code:

<?php
class custException extends Exception {
public function custMsg() {
//error message
$errorMsg = 'Error on line '.$this->getLine().' in '.$this->getFile()
.': <b>'.$this->getMessage().'</b> is not a valid password. Please enter a valid one.';
return $errorMsg;
}
}
$pwd = "Password@123";
try {
//validation
if(filter_var($pwd, FILTER_VALIDATE_EMAIL) === FALSE) {
//exception thrown if password invalid
throw new custException($pwd);
}
}
catch (custException $error) {
//show custom error
echo $error->custMsg();
}
?>

Ausgabe:

Benutzerdefinierte PHP-Ausnahme

Erklärung:

  • In dieser Nachricht erhalten wir auch die Zeilennummer, um einen entsprechenden Fehler auszulösen. Wir geben den Passwortwert ein und vergleichen ihn dann mit VALIDATE_PWD. Wenn dies „true“ zurückgibt, wird keine Ausnahme ausgelöst; Wenn das Ergebnis falsch ist, wird unsere benutzerdefinierte Ausnahme ausgelöst.

Vorteile der benutzerdefinierten PHP-Ausnahme

Im Folgenden sind die Vorteile aufgeführt:

  • Eingebaute Ausnahmen sind gut, aber benutzerdefinierte Ausnahmen sind aus der Sicht eines Entwicklers wichtiger, da sie Ausnahmen gezielt und abfangen können, wo immer er will.
  • Einfach zu debuggen, da der Entwickler an mehreren Stellen benutzerdefinierte Ausnahmen definieren und diese behandeln kann.
  • Kann die vorhandene Exception-Klasse leicht ändern und durch Erweiterung effizienter nutzen.
  • Es ist nützlich, um „nicht erfasste“ Ausnahmen abzufangen.

Fazit

In diesem Artikel haben wir das Konzept der benutzerdefinierten Definition und Behandlung von Ausnahmen gesehen. Es gibt auch andere Fälle, in denen dies verwendet werden kann, z. B. im Try-Catch-Block, indem mehrere Ausnahmen ausgelöst werden, bestimmte Ausnahmen erneut ausgelöst werden, ein erstklassiger Ausnahmehandler festgelegt wird usw.

Das obige ist der detaillierte Inhalt vonBenutzerdefinierte PHP-Ausnahme. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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
Vorheriger Artikel:PHP-AbschlussklasseNächster Artikel:PHP-Abschlussklasse