Start · Sprachen · PHP · Referenz · StompException

StompException

Klasse

Ausnahme-Klasse der STOMP-Erweiterung, die bei Verbindungs- und Protokollfehlern geworfen wird.

seit PHP 0.1.0 Kategorie: error

Signatur

class StompException extends RuntimeException

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;
}
STOMP-Fehler: Could not connect to tcp://localhost:61613 (Connection refused) Fehlercode: 0

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;
}
Verbindung fehlgeschlagen: Login failed: Bad login/passcode

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