Signatur
Beschreibung
ImagickException ist die übergeordnete Ausnahmeklasse der PHP-Erweiterung Imagick. Sie wird geworfen, wenn eine ImageMagick-Operation fehlschlägt – z. B. beim Lesen oder Schreiben von Bilddateien, beim Anwenden von Filtern oder bei ungültigen Parametern. Da sie RuntimeException erweitert, steht das gesamte Ausnahme-Interface von PHP (Nachrichten, Codes, Stack-Trace) zur Verfügung.
Im Gegensatz zu spezifischeren Unterklassen (wie ImagickDrawException oder ImagickPixelException) deckt ImagickException alle allgemeinen Imagick-Fehler ab. Durch Abfangen dieser Basisklasse lassen sich sämtliche Imagick-Fehler zentral behandeln, ohne jede Unterklasse einzeln auflisten zu müssen.
Typische Szenarien, in denen ImagickException geworfen wird: fehlende oder nicht lesbare Quelldateien, nicht unterstützte Bildformate, unzureichende Systemressourcen oder ungültige Konfigurationsparameter. Es empfiehlt sich, Imagick-Operationen grundsätzlich in try/catch-Blöcken zu kapseln und Fehler angemessen zu protokollieren oder dem Nutzer mitzuteilen.
Beispiele
Allgemeine Fehlerbehandlung mit ImagickException
<?php
try {
$imagick = new Imagick();
// Versucht, eine nicht vorhandene Datei zu laden
$imagick->readImage('/pfad/zur/nicht-existierenden/bild.jpg');
$imagick->resizeImage(200, 200, Imagick::FILTER_LANCZOS, 1);
$imagick->writeImage('/tmp/ausgabe.jpg');
$imagick->clear();
$imagick->destroy();
echo 'Bild erfolgreich verarbeitet.';
} catch (ImagickException $e) {
echo 'Imagick-Fehler: ' . $e->getMessage() . PHP_EOL;
echo 'Fehlercode: ' . $e->getCode() . PHP_EOL;
}
Unterscheidung zwischen Imagick-Unterklassen und allgemeiner Exception
<?php
function bildKonvertieren(string $quelle, string $ziel): void {
try {
$imagick = new Imagick($quelle);
$imagick->setImageFormat('png');
$imagick->writeImage($ziel);
$imagick->destroy();
echo "Konvertierung erfolgreich: $ziel" . PHP_EOL;
} catch (ImagickDrawException $e) {
// Spezifischer Fehler bei Zeichenoperationen
echo 'Zeichenfehler: ' . $e->getMessage() . PHP_EOL;
} catch (ImagickException $e) {
// Alle anderen Imagick-Fehler auffangen
echo 'Allgemeiner Imagick-Fehler: ' . $e->getMessage() . PHP_EOL;
} catch (Exception $e) {
// Sonstige PHP-Fehler
echo 'Unerwarteter Fehler: ' . $e->getMessage() . PHP_EOL;
}
}
bildKonvertieren('/tmp/foto.jpg', '/tmp/foto.png');
// Wichtig · Fallstricke
Sicherheitshinweis: Fehlermeldungen von ImagickException können interne Dateipfade oder Systemdetails enthalten. Diese sollten in Produktionsumgebungen nicht direkt an den Endnutzer ausgegeben werden, sondern lediglich geloggt werden, um keine sensiblen Informationen preiszugeben.
Die Imagick-Erweiterung muss installiert und aktiviert sein (extension=imagick in der php.ini). Ohne diese Erweiterung sind weder Imagick noch ImagickException verfügbar, was zu einem fatalen Fehler führt. Prüfe die Verfügbarkeit mit extension_loaded('imagick').