Start · Sprachen · PHP · Referenz · SolrMissingMandatoryParameterException

SolrMissingMandatoryParameterException

Klasse

Wird ausgelöst, wenn ein erforderlicher Parameter beim Aufruf einer Solr-Methode fehlt.

seit PHP 0.9.2 Kategorie: error

Signatur

class SolrMissingMandatoryParameterException extends SolrException

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;
}
Pflichtparameter fehlt: <Fehlermeldung je nach Solr-Konfiguration>

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;
}
Fehler: Pflichtparameter fehlt – Es muss mindestens ein Feld angegeben werden.

// 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: SolrMissingMandatoryParameterExceptionSolrExceptionRuntimeExceptionException. 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.