Signatur
Beschreibung
Uri\InvalidUriException wird geworfen, wenn eine URI-Zeichenkette nicht den Anforderungen des URI-Standards entspricht und daher nicht geparst oder verarbeitet werden kann. Sie ist Teil der neuen nativen URI-Erweiterung, die mit PHP 8.4 eingeführt wurde.
Diese Ausnahme tritt typischerweise auf, wenn eine ungültige URI an URI-Parsing-Funktionen oder -Methoden übergeben wird, zum Beispiel beim Aufruf von Uri\Uri::parse() oder ähnlichen Methoden mit einer fehlerhaften URI-Zeichenkette.
Da Uri\InvalidUriException von Uri\UriException erbt, können alle URI-spezifischen Ausnahmen durch Abfangen der Basisklasse Uri\UriException behandelt werden. Für eine differenzierte Fehlerbehandlung empfiehlt sich jedoch das explizite Abfangen dieser Unterklasse.
- Fehlende Pflichtkomponenten (Schema etc.) lösen diese Ausnahme aus.
- Ungültige Zeichenfolgen oder unzulässige Zeichen in URI-Bestandteilen lösen ebenfalls diese Ausnahme aus.
Beispiele
Ungültige URI abfangen
<?php
use Uri\Uri;
use Uri\InvalidUriException;
try {
$uri = Uri::parse('not a valid uri !!!:// ??');
} catch (InvalidUriException $e) {
echo 'Ungültige URI: ' . $e->getMessage() . PHP_EOL;
}
Differenzierte Fehlerbehandlung mit Basisklasse
<?php
use Uri\Uri;
use Uri\InvalidUriException;
use Uri\UriException;
function parseUri(string $input): void
{
try {
$uri = Uri::parse($input);
echo 'URI gültig: ' . $uri->toString() . PHP_EOL;
} catch (InvalidUriException $e) {
// Spezifisch: URI ist syntaktisch ungültig
echo 'Syntaxfehler in URI: ' . $e->getMessage() . PHP_EOL;
} catch (UriException $e) {
// Allgemein: sonstiger URI-Fehler
echo 'Allgemeiner URI-Fehler: ' . $e->getMessage() . PHP_EOL;
}
}
parseUri('https://example.com/pfad?q=test');
parseUri('://ungültig!!!');
// Wichtig · Fallstricke
Hinweis: Die Uri-Erweiterung und damit auch Uri\InvalidUriException wurden mit PHP 8.4.0 eingeführt. Sie stehen in älteren PHP-Versionen nicht zur Verfügung.
Beim Verarbeiten von Benutzereingaben als URIs sollte diese Ausnahme stets abgefangen werden, um unkontrollierte Programmabbrüche zu verhindern und dem Benutzer eine sinnvolle Fehlermeldung zu liefern. Vertraue niemals auf die Gültigkeit externer URI-Eingaben ohne entsprechende Ausnahmebehandlung.