Signatur
Beschreibung
StompException ist die zentrale Fehlerklasse der PHP-STOMP-Erweiterung (Simple Text Oriented Messaging Protocol). Sie wird geworfen, wenn beim Verbindungsaufbau, beim Senden oder Empfangen von Nachrichten oder bei sonstigen STOMP-Protokolloperationen ein Fehler auftritt.
Da StompException von RuntimeException erbt, lässt sie sich wie jede andere PHP-Ausnahme mit try/catch abfangen. Über die geerbten Methoden wie getMessage(), getCode() und getTrace() stehen alle Standardinformationen zur Fehlerdiagnose bereit.
Typische Auslöser sind: nicht erreichbarer STOMP-Broker (z. B. ActiveMQ, RabbitMQ), fehlerhafte Authentifizierungsdaten, ungültige Frame-Struktur oder Verbindungsabbrüche. Im Produktivbetrieb sollte jede Interaktion mit Stomp-Objekten in einem try/catch(StompException $e)-Block stattfinden.
Hinweis: Die STOMP-Erweiterung ist eine PECL-Erweiterung und muss separat installiert werden. Ab neueren PHP-Versionen empfiehlt sich alternativ die Verwendung von Userland-Bibliotheken wie stomp-php/stomp-php, die ebenfalls eigene Ausnahme-Hierarchien mitbringen.
Beispiele
Verbindungsfehler zum STOMP-Broker abfangen
<?php
try {
// Verbindung zu einem nicht erreichbaren Broker
$stomp = new Stomp('tcp://localhost:61613');
$stomp->send('/queue/test', 'Hallo Welt');
unset($stomp);
} catch (StompException $e) {
echo 'STOMP-Fehler: ' . $e->getMessage() . PHP_EOL;
echo 'Fehlercode: ' . $e->getCode() . PHP_EOL;
}
Authentifizierungsfehler separat behandeln
<?php
function connectToStomp(string $host, string $user, string $pass): Stomp
{
try {
$stomp = new Stomp($host, $user, $pass);
return $stomp;
} catch (StompException $e) {
// Fehler loggen und weiterwerfen
error_log('STOMP-Verbindungsfehler: ' . $e->getMessage());
throw $e;
}
}
try {
$stomp = connectToStomp('tcp://broker.example.com:61613', 'user', 'falsches_passwort');
} catch (StompException $e) {
echo 'Verbindung fehlgeschlagen: ' . $e->getMessage() . PHP_EOL;
}
// Wichtig · Fallstricke
PECL-Abhängigkeit: Die STOMP-Erweiterung ist nicht Bestandteil des PHP-Kerns und muss über PECL installiert werden (pecl install stomp). Ohne diese Erweiterung ist StompException nicht verfügbar.
Kompatibilität: Die PECL-STOMP-Erweiterung wird nicht mehr aktiv weiterentwickelt. Für neue Projekte sollte eine Userland-Bibliothek wie stomp-php/stomp-php in Betracht gezogen werden.
Fehlerbehandlung: Nicht alle STOMP-Fehler führen unmittelbar zu einer Ausnahme — einige Operationen liefern false zurück. Es empfiehlt sich, zusätzlich den Rückgabewert von Methoden wie send() zu prüfen.