PHP -zelfstudie

PHP HOME PHP-intro PHP-installatie PHP-syntaxis PHP-opmerkingen PHP-variabelen PHP-echo / afdrukken PHP-gegevenstypen PHP-strings PHP-nummers PHP-wiskunde PHP-constanten PHP-operators PHP Als...Anders...Anders PHP-switch PHP-loops PHP-functies PHP-arrays PHP Superglobals PHP RegEx

PHP- formulieren

PHP-formulierverwerking PHP-formuliervalidatie PHP-formulier vereist URL/e-mail van PHP-formulier PHP-formulier voltooid

PHP Geavanceerd

PHP-datum en tijd PHP opnemen PHP-bestandsverwerking PHP-bestand openen/lezen PHP-bestand maken/schrijven PHP-bestand uploaden PHP-cookies PHP-sessies PHP-filters PHP-filters geavanceerd PHP-callback-functies PHP JSON PHP-uitzonderingen

PHP OOP

PHP Wat is OOP PHP-klassen/objecten PHP-constructor PHP-vernietiger PHP-toegangsmodificaties PHP-overerving PHP-constanten PHP abstracte lessen PHP-interfaces PHP-kenmerken PHP statische methoden Statische eigenschappen van PHP PHP-naamruimten PHP-iterables

MySQL- database

MySQL-database MySQL Connect MySQL DB maken MySQL-tabel maken MySQL Gegevens invoegen MySQL Laatste ID ophalen MySQL Meerdere invoegen MySQL voorbereid MySQL Gegevens selecteren MySQL Waar MySQL Bestel op MySQL Gegevens verwijderen MySQL-updategegevens MySQL-limietgegevens

PHP XML

PHP XML-parsers PHP SimpleXML-parser PHP SimpleXML - Get PHP XML Expat PHP XML DOM

PHP - AJAX

Ajax-intro AJAX PHP AJAX-database AJAX XML Live zoeken in Ajax Ajax-peiling

PHP- voorbeelden

PHP-voorbeelden PHP-compiler PHP-quiz PHP-oefeningen PHP-certificaat

PHP- referentie

PHP-overzicht PHP-array PHP-agenda PHP-datum PHP-map PHP-fout PHP-uitzondering PHP-bestandssysteem PHP-filter PHP FTP PHP JSON PHP-sleutelwoorden PHP Libxml PHP-e-mail PHP-wiskunde PHP Diversen PHP MySQLi PHP-netwerk PHP-uitvoercontrole PHP RegEx PHP SimpleXML PHP-stream PHP-string Beheer van PHP-variabelen PHP XML-parser PHP-zip PHP-tijdzones

PHP -uitzonderingen


Wat is een uitzondering?

Een uitzondering is een object dat een fout of onverwacht gedrag van een PHP-script beschrijft.

Uitzonderingen worden veroorzaakt door veel PHP-functies en klassen.

Door de gebruiker gedefinieerde functies en klassen kunnen ook uitzonderingen genereren.

Uitzonderingen zijn een goede manier om een ​​functie te stoppen wanneer deze gegevens tegenkomt die niet kunnen worden gebruikt.


Een uitzondering maken

Met de throwinstructie kan een door de gebruiker gedefinieerde functie of methode een uitzondering genereren. Wanneer een uitzondering wordt gegenereerd, wordt de code die erop volgt niet uitgevoerd.

Als een uitzondering niet wordt opgevangen, treedt er een fatale fout op met het bericht "Ongevangen uitzondering".

Laten we proberen een uitzondering te maken zonder deze te vangen:

Voorbeeld

<?php
function divide($dividend, $divisor) {
  if($divisor == 0) {
    throw new Exception("Division by zero");
  }
  return $dividend / $divisor;
}

echo divide(5, 0);
?>

Het resultaat ziet er ongeveer zo uit:

Fatal error: Uncaught Exception: Division by zero in C:\webfolder\test.php:4
Stack trace: #0 C:\webfolder\test.php(9):
divide(5, 0) #1 {main} thrown in C:\webfolder\test.php on line 4

De try...catch-verklaring

Om de fout uit het bovenstaande voorbeeld te voorkomen, kunnen we de try...catchinstructie gebruiken om uitzonderingen op te vangen en het proces voort te zetten.

Syntaxis

try {
  code that can throw exceptions
} catch(Exception $e) {
  code that runs when an exception is caught
}

Voorbeeld

Een bericht weergeven wanneer een uitzondering wordt gegenereerd:

<?php
function divide($dividend, $divisor) {
  if($divisor == 0) {
    throw new Exception("Division by zero");
  }
  return $dividend / $divisor;
}

try {
  echo divide(5, 0);
} catch(Exception $e) {
  echo "Unable to divide.";
}
?>

Het catch-blok geeft aan welk type uitzondering moet worden opgevangen en de naam van de variabele die kan worden gebruikt om toegang te krijgen tot de uitzondering. In het bovenstaande voorbeeld is het type uitzondering Exceptionen is de variabelenaam $e.


De try...catch... eindelijk Statement

De try...catch...finallyverklaring kan worden gebruikt om uitzonderingen op te vangen. Code in het finallyblok wordt altijd uitgevoerd, ongeacht of er een uitzondering is opgevangen. Indien finallyaanwezig, is het catchblok optioneel.

Syntaxis

try {
  code that can throw exceptions
} catch(Exception $e) {
  code that runs when an exception is caught
} finally {
  code that always runs regardless of whether an exception was caught
}

Voorbeeld

Toon een bericht wanneer een uitzondering wordt gegenereerd en geef vervolgens aan dat het proces is beëindigd:

<?php
function divide($dividend, $divisor) {
  if($divisor == 0) {
    throw new Exception("Division by zero");
  }
  return $dividend / $divisor;
}

try {
  echo divide(5, 0);
} catch(Exception $e) {
  echo "Unable to divide. ";
} finally {
  echo "Process complete.";
}
?>

Voorbeeld

Voer een tekenreeks uit, zelfs als een uitzondering niet is opgevangen:

<?php
function divide($dividend, $divisor) {
  if($divisor == 0) {
    throw new Exception("Division by zero");
  }
  return $dividend / $divisor;
}

try {
  echo divide(5, 0);
} finally {
  echo "Process complete.";
}
?>

Het uitzonderingsobject

Het uitzonderingsobject bevat informatie over de fout of het onverwachte gedrag dat de functie heeft aangetroffen.

Syntaxis

new Exception(message, code, previous)

Parameterwaarden

Parameter Description
message Optional. A string describing why the exception was thrown
code Optional. An integer that can be used used to easily distinguish this exception from others of the same type
previous Optional. If this exception was thrown in a catch block of another exception, it is recommended to pass that exception into this parameter

Methoden:

Bij het opvangen van een uitzondering toont de volgende tabel enkele van de methoden die kunnen worden gebruikt om informatie over de uitzondering te krijgen:

Method Description
getMessage() Returns a string describing why the exception was thrown
getPrevious() If this exception was triggered by another one, this method returns the previous exception. If not, then it returns null
getCode() Returns the exception code
getFile() Returns the full path of the file in which the exception was thrown
getLine() Returns the line number of the line of code which threw the exception

Voorbeeld

Voer informatie uit over een uitzonde ring die is gegenereerd:

<?php
function divide($dividend, $divisor) {
  if($divisor == 0) {
    throw new Exception("Division by zero", 1);
  }
  return $dividend / $divisor;
}

try {
  echo divide(5, 0);
} catch(Exception $ex) {
  $code = $ex->getCode();
  $message = $ex->getMessage();
  $file = $ex->getFile();
  $line = $ex->getLine();
  echo "Exception thrown in $file on line $line: [Code $code]
  $message";
}
?>

Volledige uitzonderingsreferentie

Ga voor een volledige referentie naar onze Complete PHP Exception Reference .

De referentie bevat beschrijvingen en voorbeelden van alle Exception-methoden.