Signatur
Beschreibung
GmagickException ist die einzige Ausnahmeklasse der Gmagick-Erweiterung und erweitert die PHP-Kernklasse RuntimeException. Sie wird geworfen, wenn eine Operation der Gmagick-Klasse fehlschlägt – etwa beim Öffnen einer nicht vorhandenen Bilddatei, bei ungültigen Parametern oder bei internen GraphicsMagick-Fehlern.
Da sie von RuntimeException erbt, stehen alle Standardmethoden wie getMessage(), getCode() und getTrace() zur Verfügung. Der Fehlercode entspricht dabei dem internen GraphicsMagick-Fehlercode, die Fehlermeldung enthält eine lesbare Beschreibung des aufgetretenen Problems.
Für eine robuste Bildverarbeitung sollten alle Aufrufe an Gmagick-Methoden in einem try/catch-Block gekapselt werden, der explizit GmagickException abfängt. So können Laufzeitfehler kontrolliert behandelt werden, ohne dass das Skript unkontrolliert abbricht.
Beispiele
Fehlerbehandlung beim Öffnen einer Bilddatei
<?php
try {
$gmagick = new Gmagick('/pfad/zu/nichtvorhandene-datei.jpg');
$gmagick->thumbnailimage(200, 150);
$gmagick->write('/pfad/zu/ausgabe.jpg');
} catch (GmagickException $e) {
echo 'Gmagick-Fehler: ' . $e->getMessage() . PHP_EOL;
echo 'Fehlercode: ' . $e->getCode() . PHP_EOL;
}
Unterscheidung zwischen Gmagick- und allgemeinen Ausnahmen
<?php
function verarbeitesBild(string $eingabe, string $ausgabe): void {
try {
$gmagick = new Gmagick($eingabe);
$gmagick->resizeimage(800, 600, Gmagick::FILTER_LANCZOS, 1, true);
$gmagick->setimageformat('jpeg');
$gmagick->writeimage($ausgabe);
echo 'Bild erfolgreich verarbeitet: ' . $ausgabe . PHP_EOL;
} catch (GmagickException $e) {
// Spezifischer GraphicsMagick-Fehler
error_log('GraphicsMagick-Fehler [' . $e->getCode() . ']: ' . $e->getMessage());
throw new RuntimeException('Bildverarbeitung fehlgeschlagen.', 0, $e);
}
}
try {
verarbeitesBild('/bilder/foto.png', '/bilder/foto_klein.jpg');
} catch (RuntimeException $e) {
echo 'Fehler: ' . $e->getMessage() . PHP_EOL;
echo 'Ursache: ' . $e->getPrevious()->getMessage() . PHP_EOL;
}
// Wichtig · Fallstricke
Gmagick vs. Imagick: Die Gmagick-Erweiterung basiert auf GraphicsMagick, während Imagick auf ImageMagick aufbaut. Die Ausnahmen beider Erweiterungen (GmagickException und ImagickException) sind nicht kompatibel und müssen getrennt abgefangen werden.
Verfügbarkeit: Die Gmagick-Erweiterung ist keine Standard-PHP-Erweiterung und muss separat installiert werden (z. B. via PECL: pecl install gmagick). Prüfen Sie mit extension_loaded('gmagick'), ob sie verfügbar ist.
Fehlercodes: Die numerischen Fehlercodes entsprechen den internen GraphicsMagick-Fehlercodes und sind in der GraphicsMagick-Dokumentation beschrieben. Sie können zur differenzierten Fehlerbehandlung herangezogen werden.