Signatur
Beschreibung
Uri\UriException ist die gemeinsame Basisklasse aller Ausnahmen, die von der nativen Uri-Erweiterung (eingeführt in PHP 8.4) geworfen werden. Durch das Ableiten von \RuntimeException fügt sie sich nahtlos in PHPs Standard-Ausnahme-Hierarchie ein und kann mit dem üblichen try/catch-Muster behandelt werden.
Konkrete Unterklassen – etwa Uri\InvalidUriException oder Uri\MissingComponentException – repräsentieren spezifische Fehlerzustände. Indem man Uri\UriException im catch-Block verwendet, lassen sich alle URI-Fehler auf einmal abfangen, ohne jeden Untertyp einzeln aufführen zu müssen.
Der typische Einsatz besteht darin, beim Parsen, Validieren oder Manipulieren von URIs einen einheitlichen Fehlerbehandlungs-Block zu schreiben und dabei bei Bedarf auf die spezifischere Unterklasse zu verzweigen, wenn eine differenziertere Reaktion gewünscht ist.
Beispiele
Alle URI-Fehler gemeinsam abfangen
<?php
use Uri\Uri;
use Uri\UriException;
try {
// Ungültige URI – wirft eine Unterklasse von UriException
$uri = Uri::parse('ht tp://exam ple.com/path');
} catch (UriException $e) {
echo 'URI-Fehler: ' . $e->getMessage();
}
Differenzierte Fehlerbehandlung mit Fallback auf UriException
<?php
use Uri\Uri;
use Uri\UriException;
use Uri\InvalidUriException;
try {
$uri = Uri::parse('://fehlerhaft');
$host = $uri->getHost();
} catch (InvalidUriException $e) {
// Gezielter Zweig für ungültige URIs
echo 'Ungültige URI: ' . $e->getMessage();
} catch (UriException $e) {
// Fallback für alle anderen URI-Fehler
echo 'Sonstiger URI-Fehler: ' . $e->getMessage();
}
// Wichtig · Fallstricke
Verfügbarkeit: Die Uri-Erweiterung und damit auch Uri\UriException sind ab PHP 8.4 als Kern-Erweiterung verfügbar und müssen nicht separat installiert werden.
Da Uri\UriException von \RuntimeException erbt, kann sie auch als \RuntimeException oder \Exception abgefangen werden – für maximale Spezifität sollte jedoch stets der engstmögliche Typ verwendet werden.