Signatur
Beschreibung
SolrMissingMandatoryParameterException ist eine Ausnahme aus der PECL Solr-Erweiterung, die geworfen wird, sobald ein zwingend erforderlicher Parameter beim Aufrufen einer Solr-API-Methode nicht übergeben wurde. Sie erbt von SolrException und damit indirekt von RuntimeException.
Typische Auslöser sind fehlende Pflichtfelder wie der Dokumentschlüssel (uniqueKey) beim Hinzufügen von Dokumenten zu einem Solr-Index, oder ausgelassene Pflichtparameter bei der Konstruktion von Solr-Abfragen. Die Ausnahme hilft dabei, Programmierfehler frühzeitig zu erkennen, bevor eine unvollständige Anfrage an den Solr-Server gesendet wird.
Da die Klasse keine eigenen Methoden oder Eigenschaften hinzufügt, stehen alle Standard-Methoden von Exception zur Verfügung: getMessage(), getCode(), getFile(), getLine() usw. Über getInternalInfo() (geerbt von SolrException) lassen sich zusätzliche interne Fehlerinformationen abrufen.
Im Fehlerhandling sollte diese Ausnahme separat von allgemeinen SolrException-Blöcken gefangen werden, wenn spezifische Reaktionen auf fehlende Parameter gewünscht sind – etwa um dem Entwickler oder Nutzer einen präzisen Hinweis auf das fehlende Argument zu geben.
Beispiele
Fehlenden Pflichtparameter beim Hinzufügen eines Solr-Dokuments abfangen
<?php
try {
$client = new SolrClient([
'hostname' => 'localhost',
'port' => 8983,
'path' => '/solr/mycore',
]);
$doc = new SolrInputDocument();
// Absichtlich: kein Pflichtfeld (z. B. uniqueKey) gesetzt
// Dies kann je nach Konfiguration eine SolrMissingMandatoryParameterException auslösen
$doc->addField('title', 'Testdokument');
$client->addDocument($doc);
$client->commit();
} catch (SolrMissingMandatoryParameterException $e) {
echo 'Pflichtparameter fehlt: ' . $e->getMessage() . PHP_EOL;
echo 'Fehlercode: ' . $e->getCode() . PHP_EOL;
$info = $e->getInternalInfo();
echo 'Interne Info: ' . print_r($info, true) . PHP_EOL;
} catch (SolrException $e) {
echo 'Allgemeiner Solr-Fehler: ' . $e->getMessage() . PHP_EOL;
} catch (Exception $e) {
echo 'Unbekannter Fehler: ' . $e->getMessage() . PHP_EOL;
}
Gezielte Unterscheidung verschiedener Solr-Ausnahmetypen
<?php
function addSolrDocument(SolrClient $client, array $fields): void
{
if (empty($fields)) {
// Manuell prüfen und werfen, bevor die Solr-API aufgerufen wird
throw new SolrMissingMandatoryParameterException(
'Es muss mindestens ein Feld angegeben werden.'
);
}
$doc = new SolrInputDocument();
foreach ($fields as $name => $value) {
$doc->addField($name, $value);
}
$client->addDocument($doc);
}
try {
$client = new SolrClient(['hostname' => 'localhost', 'port' => 8983]);
// Leeres Felder-Array übergeben → löst Ausnahme aus
addSolrDocument($client, []);
} catch (SolrMissingMandatoryParameterException $e) {
echo 'Fehler: Pflichtparameter fehlt – ' . $e->getMessage() . PHP_EOL;
} catch (SolrServerException $e) {
echo 'Serverfehler: ' . $e->getMessage() . PHP_EOL;
} catch (SolrException $e) {
echo 'Solr-Fehler: ' . $e->getMessage() . PHP_EOL;
}
// Wichtig · Fallstricke
Voraussetzung: Die Klasse ist nur verfügbar, wenn die PECL Solr-Erweiterung installiert und aktiviert ist (extension=solr in der php.ini). Sie ist nicht Bestandteil der PHP-Standardbibliothek.
Vererbungshierarchie: SolrMissingMandatoryParameterException → SolrException → RuntimeException → Exception. Alle Methoden der Elternklassen stehen zur Verfügung, inklusive getInternalInfo() von SolrException.
In produktiven Anwendungen sollte diese Ausnahme stets vor dem allgemeineren SolrException-Block gefangen werden, da PHP den ersten passenden catch-Block verwendet.