Start · Sprachen · PHP · Referenz · ZookeeperMarshallingException

ZookeeperMarshallingException

Klasse

Repräsentiert einen ZooKeeper-Fehler beim Marshalling oder Unmarshalling von Daten.

seit PHP 3.4.6 Kategorie: error

Signatur

class ZookeeperMarshallingException extends ZookeeperException

Beschreibung

ZookeeperMarshallingException ist eine spezialisierte Ausnahme der ZooKeeper-PHP-Erweiterung, die geworfen wird, wenn beim Serialisieren (Marshalling) oder Deserialisieren (Unmarshalling) von Daten ein Fehler auftritt. Sie ist eine Unterklasse von ZookeeperException und damit Teil der ZooKeeper-Fehlerhierarchie.

Marshalling-Fehler können auftreten, wenn Daten, die an ZooKeeper übergeben oder von ZooKeeper empfangen werden, nicht korrekt in das erwartete Format konvertiert werden können. Dies betrifft z. B. das Lesen oder Schreiben von Knoten-Daten (ZNodes) sowie ACL-Strukturen.

In der Praxis sollte diese Ausnahme zusammen mit anderen ZooKeeper-Ausnahmen in einem try/catch-Block abgefangen werden, um robuste ZooKeeper-Interaktionen zu gewährleisten. Da sie von ZookeeperException erbt, kann sie auch gemeinsam mit anderen spezifischen ZooKeeper-Fehlern behandelt werden.

  • Geworfen bei ungültigen oder nicht serialisierbaren Datenstrukturen.
  • Kann bei lesenden und schreibenden ZooKeeper-Operationen auftreten.
  • Erbt alle Methoden von Exception und ZookeeperException.

Beispiele

Abfangen von ZookeeperMarshallingException beim Lesen eines ZNodes

<?php
try {
    $zk = new Zookeeper('localhost:2181');
    $data = $zk->get('/mein/pfad');
    echo "Daten: " . $data;
} catch (ZookeeperMarshallingException $e) {
    echo "Marshalling-Fehler: " . $e->getMessage() . PHP_EOL;
    echo "Code: " . $e->getCode() . PHP_EOL;
} catch (ZookeeperException $e) {
    echo "Allgemeiner ZooKeeper-Fehler: " . $e->getMessage() . PHP_EOL;
}

Hierarchisches Abfangen mehrerer ZooKeeper-Ausnahmen

<?php
function schreibeZNode(Zookeeper $zk, string $pfad, string $daten): void {
    try {
        $zk->set($pfad, $daten);
        echo "Daten erfolgreich geschrieben." . PHP_EOL;
    } catch (ZookeeperMarshallingException $e) {
        // Spezifischer Marshalling-Fehler
        error_log('ZooKeeper Marshalling-Fehler [' . $e->getCode() . ']: ' . $e->getMessage());
        throw $e;
    } catch (ZookeeperConnectionException $e) {
        // Verbindungsfehler separat behandeln
        error_log('ZooKeeper Verbindungsfehler: ' . $e->getMessage());
        throw $e;
    } catch (ZookeeperException $e) {
        // Alle anderen ZooKeeper-Fehler
        error_log('ZooKeeper Fehler: ' . $e->getMessage());
        throw $e;
    }
}

$zk = new Zookeeper('localhost:2181');
schreibeZNode($zk, '/test/knoten', 'Hallo Welt');
Daten erfolgreich geschrieben.

// Wichtig · Fallstricke

Hinweis zur Erweiterung: ZookeeperMarshallingException ist Teil der PHP-Erweiterung php-zookeeper, die separat installiert werden muss (z. B. über PECL: pecl install zookeeper). Die Klasse steht nicht in einem Standard-PHP-Install zur Verfügung.

Da es sich um eine interne Ausnahme der Erweiterung handelt, können die genauen Auslöser je nach eingesetzter Version der ZooKeeper-Bibliothek und der PHP-Erweiterung variieren. Es empfiehlt sich, stets sowohl ZookeeperMarshallingException als auch den übergeordneten ZookeeperException-Typ abzufangen, um alle Fehlerfälle zu behandeln.