Start · Sprachen · PHP · Referenz · ZMQContextException

ZMQContextException

Klasse

Wird ausgelöst, wenn bei der Erstellung oder Verwendung eines <code>ZMQContext</code>-Objekts ein Fehler auftritt.

Kategorie: error

Signatur

class ZMQContextException extends ZMQException

Beschreibung

ZMQContextException ist eine spezialisierte Ausnahmeklasse der ZMQ-Erweiterung (ZeroMQ für PHP), die geworfen wird, wenn Fehler im Zusammenhang mit dem ZMQContext auftreten. Ein ZMQContext ist der Einstiegspunkt für alle ZeroMQ-Operationen und verwaltet den I/O-Thread-Pool sowie Verbindungen.

Typische Situationen, in denen diese Ausnahme ausgelöst wird, sind z. B. eine ungültige Anzahl von I/O-Threads beim Instanziieren des Kontexts oder Fehler beim Setzen oder Abfragen von Kontext-Optionen über ZMQContext::setOpt() bzw. ZMQContext::getOpt().

ZMQContextException erbt von ZMQException, welche wiederum von der PHP-Basisklasse Exception ableitet. Damit stehen alle gewohnten Methoden wie getMessage(), getCode() und getTrace() zur Verfügung. Der Fehlercode entspricht dabei in der Regel dem errno-Wert des zugrundeliegenden ZeroMQ-Fehlers.

Es empfiehlt sich, ZMQ-Kontextoperationen stets in einem try/catch-Block zu kapseln und ZMQContextException gezielt abzufangen, um robuste und fehlertolerante Messaging-Anwendungen zu bauen.

Beispiele

ZMQContext erstellen und Ausnahme abfangen

<?php
try {
    // Erstelle einen ZMQContext mit 1 I/O-Thread
    $context = new ZMQContext(1);
    echo "ZMQContext erfolgreich erstellt." . PHP_EOL;

    // Versuche, eine ungültige Option zu setzen
    $context->setOpt(999, 1);
} catch (ZMQContextException $e) {
    echo "ZMQContext-Fehler: " . $e->getMessage() . PHP_EOL;
    echo "Fehlercode: " . $e->getCode() . PHP_EOL;
} catch (ZMQException $e) {
    echo "Allgemeiner ZMQ-Fehler: " . $e->getMessage() . PHP_EOL;
}
ZMQContext erfolgreich erstellt. ZMQContext-Fehler: Unknown option key

Kontext-Option lesen und Fehler behandeln

<?php
try {
    $context = new ZMQContext(2);

    // Lese maximale Anzahl der Sockets
    $maxSockets = $context->getOpt(ZMQ::CTXOPT_MAX_SOCKETS);
    echo "Maximale Sockets: " . $maxSockets . PHP_EOL;

    // Setze maximale Sockets auf einen gültigen Wert
    $context->setOpt(ZMQ::CTXOPT_MAX_SOCKETS, 512);
    echo "Maximale Sockets auf 512 gesetzt." . PHP_EOL;
} catch (ZMQContextException $e) {
    echo "Fehler beim Zugriff auf Kontext-Option: " . $e->getMessage() . PHP_EOL;
    echo "ZMQ-Fehlercode: " . $e->getCode() . PHP_EOL;
}
Maximale Sockets: 1024 Maximale Sockets auf 512 gesetzt.

// Wichtig · Fallstricke

Abhängigkeit: Die ZMQContextException-Klasse ist nur verfügbar, wenn die PECL-Erweiterung zmq installiert und aktiviert ist. Sie ist kein Bestandteil des PHP-Kerns.

Fehlercode: Der über getCode() zurückgegebene Wert entspricht dem nativen errno-Wert von ZeroMQ. Diese Codes können plattformabhängig variieren und sollten nur zur Diagnose, nicht zur Programmlogik herangezogen werden.

Vererbungshierarchie: ZMQContextExceptionZMQExceptionException. Beim Abfangen mehrerer ZMQ-Ausnahmetypen sollte ZMQContextException stets vor dem allgemeineren ZMQException stehen.