Start · Sprachen · PHP · Referenz · ImagickException

ImagickException

Klasse

Basis-Ausnahmeklasse der Imagick-Erweiterung, die bei Fehlern im Zusammenhang mit ImageMagick-Operationen geworfen wird.

seit PHP 2.0.0 Kategorie: error

Signatur

class ImagickException extends RuntimeException

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;
}
Imagick-Fehler: unable to open image `/pfad/zur/nicht-existierenden/bild.jpg': No such file or directory Fehlercode: 435

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');
Konvertierung erfolgreich: /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').