Start · Sprachen · PHP · Referenz · SNMPException

SNMPException

Klasse

Ausnahmeklasse der SNMP-Erweiterung, die bei Fehlern im Umgang mit SNMP-Operationen geworfen wird.

seit PHP 5.4.0 Kategorie: error

Signatur

class SNMPException extends RuntimeException

Beschreibung

SNMPException ist die spezialisierte Ausnahmeklasse der PHP-SNMP-Erweiterung. Sie wird geworfen, wenn bei SNMP-Operationen – beispielsweise beim Verbindungsaufbau, beim Lesen oder Schreiben von OIDs – ein Fehler auftritt. Da sie von RuntimeException erbt, kann sie mit dem üblichen try/catch-Mechanismus abgefangen werden.

Typische Ursachen für das Werfen einer SNMPException sind ungültige Host-Adressen, falsche Community-Strings, Timeouts, nicht erreichbare SNMP-Agenten oder ungültige OID-Angaben. Die Klasse liefert über die geerbten Methoden wie getMessage() und getCode() Informationen über die Art des Fehlers.

Die Klasse wird ausschließlich von der SNMP-Klasse (objektorientierter Stil) verwendet. Beim prozeduralen Stil der SNMP-Funktionen (z. B. snmpget()) werden stattdessen Warnungen ausgegeben und false zurückgegeben.

Um SNMPException-Objekte zu erhalten, muss die SNMP-Instanz entsprechend konfiguriert sein. Standardmäßig ist SNMP::$exceptions_enabled gesetzt, sodass Ausnahmen automatisch geworfen werden, wenn Fehler auftreten.

Beispiele

Abfangen einer SNMPException bei ungültigem Host

<?php
try {
    $snmp = new SNMP(SNMP::VERSION_2C, 'ungueltigerhost.example.com', 'public', 1000000, 1);
    $result = $snmp->get('.1.3.6.1.2.1.1.1.0');
    echo $result;
} catch (SNMPException $e) {
    echo 'SNMP-Fehler: ' . $e->getMessage() . PHP_EOL;
    echo 'Fehlercode: ' . $e->getCode() . PHP_EOL;
}
SNMP-Fehler: Could not connect to the host Fehlercode: 0

Fehlerbehandlung beim Lesen einer ungültigen OID

<?php
try {
    $snmp = new SNMP(SNMP::VERSION_2C, '127.0.0.1', 'public', 1000000, 1);
    // Exceptions explizit aktivieren
    $snmp->exceptions_enabled = SNMP::ERRNO_ANY;
    $result = $snmp->get('ungueltige.oid.hier');
    echo $result;
} catch (SNMPException $e) {
    echo 'Fehler beim OID-Zugriff: ' . $e->getMessage() . PHP_EOL;
} finally {
    echo 'SNMP-Abfrage abgeschlossen.' . PHP_EOL;
}
Fehler beim OID-Zugriff: Invalid object identifier SNMP-Abfrage abgeschlossen.

// Wichtig · Fallstricke

Exceptions aktivieren: Damit SNMPException geworfen wird, muss die Eigenschaft SNMP::$exceptions_enabled gesetzt sein. Mit der Konstante SNMP::ERRNO_ANY werden alle Fehlertypen als Ausnahmen behandelt. Es ist möglich, nur bestimmte Fehlerklassen (z. B. SNMP::ERRNO_TIMEOUT) als Ausnahmen zu konfigurieren.

Sicherheit: Community-Strings sollten niemals im Klartext in Logdateien landen. Achte darauf, in catch-Blöcken keine sensiblen Verbindungsdetails unkontrolliert auszugeben.

Verfügbarkeit: Die SNMP-Erweiterung und damit SNMPException ist nicht in jeder PHP-Installation standardmäßig aktiv. Sie muss beim Kompilieren mit --with-snmp aktiviert werden.