Signatur
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;
}
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;
}
// 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: ZMQContextException → ZMQException → Exception. Beim Abfangen mehrerer ZMQ-Ausnahmetypen sollte ZMQContextException stets vor dem allgemeineren ZMQException stehen.