Signatur
Beschreibung
MemcachedException ist die Basis-Ausnahmeklasse der Memcached-Erweiterung (PECL memcached). Sie wird geworfen, wenn bei der Initialisierung oder Konfiguration des Memcached-Objekts ein kritischer Fehler auftritt, beispielsweise wenn ein ungültiger Serialisierer oder Kompressor angegeben wird.
Die Klasse erbt von RuntimeException und stellt damit alle Standardmethoden der PHP-Ausnahmehierarchie zur Verfügung, wie getMessage(), getCode(), getFile() und getTrace(). Im regulären Betrieb – etwa bei fehlgeschlagenen get()- oder set()-Aufrufen – wird keine Ausnahme geworfen; stattdessen liefern diese Methoden Rückgabewerte und Statuscodes über getResultCode().
Sinnvoll einzusetzen ist ein try/catch-Block mit MemcachedException vor allem beim Aufbau der Verbindung und der Konfiguration des Memcached-Objekts, um fehlerhafte Setups frühzeitig zu erkennen und sauber behandeln zu können.
Beispiele
Abfangen einer MemcachedException beim Setzen eines ungültigen Serialisierers
<?php
try {
$mc = new Memcached();
// Ungültiger Serialisierer-Wert provoziert eine MemcachedException
$mc->setOption(Memcached::OPT_SERIALIZER, 99999);
$mc->addServer('127.0.0.1', 11211);
} catch (MemcachedException $e) {
echo 'Memcached-Fehler: ' . $e->getMessage() . PHP_EOL;
echo 'Fehlercode: ' . $e->getCode() . PHP_EOL;
}
Allgemeine Fehlerbehandlung mit Ausnahme-Hierarchie
<?php
function createMemcachedClient(string $host, int $port): Memcached
{
try {
$mc = new Memcached('app_pool');
$mc->setOption(Memcached::OPT_CONNECT_TIMEOUT, 200);
$mc->setOption(Memcached::OPT_RETRY_TIMEOUT, 2);
$mc->addServer($host, $port);
return $mc;
} catch (MemcachedException $e) {
// Konfigurationsfehler der Memcached-Erweiterung
error_log('MemcachedException: ' . $e->getMessage());
throw $e;
} catch (\RuntimeException $e) {
// Andere Laufzeitfehler
error_log('RuntimeException: ' . $e->getMessage());
throw $e;
}
}
try {
$client = createMemcachedClient('127.0.0.1', 11211);
echo 'Verbindung erfolgreich aufgebaut.' . PHP_EOL;
} catch (\Exception $e) {
echo 'Fehler beim Aufbau des Memcached-Clients: ' . $e->getMessage() . PHP_EOL;
}
// Wichtig · Fallstricke
Wichtig: Die meisten Memcached-Operationen (wie get(), set(), delete()) werfen bei Fehlern keine MemcachedException, sondern geben false zurück. Den genauen Fehlergrund erhält man dann über Memcached::getResultCode() und Memcached::getResultMessage().
MemcachedException tritt hauptsächlich bei Konfigurations- oder Initialisierungsfehlern auf – nicht bei Netzwerkproblemen oder Cache-Misses im laufenden Betrieb.
Die Klasse ist Teil der PECL-Erweiterung memcached (nicht zu verwechseln mit der älteren memcache-Erweiterung, die eine eigene Fehlerbehandlung verwendet).