Signatur
Beschreibung
SolrIllegalArgumentException ist eine spezialisierte Ausnahme aus der PECL-Solr-Erweiterung und wird geworfen, wenn einer Solr-Methode ein Argument übergeben wird, das ungültig, leer oder vom falschen Typ ist. Sie erweitert SolrException, die ihrerseits von der eingebauten PHP-Klasse RuntimeException erbt.
Typische Situationen, in denen diese Ausnahme ausgelöst wird, sind das Übergeben eines leeren Strings als Feldname, eines negativen Wertes wo nur positive Zahlen erlaubt sind, oder eines null-Wertes an eine Methode, die einen gültigen Wert erwartet. Die Ausnahme hilft dabei, Programmierfehler frühzeitig zu erkennen, bevor eine fehlerhafte Anfrage an den Solr-Server gesendet wird.
Da SolrIllegalArgumentException die Klasse SolrException erweitert, kann sie entweder gezielt mit einem eigenen catch-Block für diese Klasse oder allgemeiner über SolrException bzw. Exception abgefangen werden. Für eine robuste Fehlerbehandlung in produktiven Anwendungen empfiehlt sich das gezielte Abfangen dieser Ausnahme.
Beispiele
Abfangen einer SolrIllegalArgumentException bei leerem Feldnamen
<?php
try {
$query = new SolrQuery();
// Leerer Feldname ist ungültig und wirft SolrIllegalArgumentException
$query->addField('');
} catch (SolrIllegalArgumentException $e) {
echo 'Ungültiges Argument: ' . $e->getMessage() . PHP_EOL;
echo 'Code: ' . $e->getCode() . PHP_EOL;
} catch (SolrException $e) {
echo 'Allgemeiner Solr-Fehler: ' . $e->getMessage() . PHP_EOL;
}
Hierarchisches Abfangen von Solr-Ausnahmen
<?php
function addSolrField(SolrQuery $query, string $fieldName): void {
if (trim($fieldName) === '') {
throw new SolrIllegalArgumentException('Feldname darf nicht leer sein.');
}
$query->addField($fieldName);
}
try {
$query = new SolrQuery();
addSolrField($query, '');
} catch (SolrIllegalArgumentException $e) {
// Spezifischer Fehlerfall: ungültiges Argument
echo '[IllegalArgument] ' . $e->getMessage() . PHP_EOL;
} catch (SolrException $e) {
// Alle anderen Solr-Fehler
echo '[SolrFehler] ' . $e->getMessage() . PHP_EOL;
} catch (Exception $e) {
// Fallback für unbekannte Fehler
echo '[Fehler] ' . $e->getMessage() . PHP_EOL;
}
// Wichtig · Fallstricke
Die Klasse SolrIllegalArgumentException steht nur zur Verfügung, wenn die PECL-Erweiterung solr installiert und aktiviert ist. Sie ist nicht Bestandteil des PHP-Kerns. Überprüfen Sie die Installation mit extension_loaded('solr') oder phpinfo().
Die Vererbungshierarchie lautet: SolrIllegalArgumentException → SolrException → RuntimeException → Exception. Beim Abfangen mehrerer Ausnahmetypen immer die spezifischste Klasse zuerst angeben, da sonst der allgemeinere catch-Block greift.