Start · Sprachen · PHP · Referenz · ImagickDrawException

ImagickDrawException

Klasse

Wird bei einem Fehler des <code>ImagickDraw</code>-Objekts ausgelöst.

Kategorie: error

Signatur

class ImagickDrawException extends ImagickException

Beschreibung

ImagickDrawException ist eine spezialisierte Ausnahme-Klasse, die von der imagick-Erweiterung geworfen wird, wenn bei Operationen auf einem ImagickDraw-Objekt ein Fehler auftritt. Sie erweitert ImagickException und ermöglicht damit eine granulare Fehlerbehandlung speziell für Zeichenoperationen.

Typische Situationen, in denen diese Ausnahme ausgelöst wird, sind ungültige Parameter bei Zeichenbefehlen, fehlerhafte Pfadangaben in Vektorgrafik-Operationen oder der Versuch, eine Zeichenoperation auf einem nicht korrekt initialisierten ImagickDraw-Objekt auszuführen.

Da ImagickDrawException von ImagickException und diese wiederum von der Standard-PHP-Klasse Exception erbt, können Instanzen dieser Klasse entweder gezielt mit catch (ImagickDrawException $e) oder allgemeiner mit catch (ImagickException $e) bzw. catch (Exception $e) abgefangen werden.

Beispiele

Gezieltes Abfangen einer ImagickDrawException

<?php
try {
    $draw = new ImagickDraw();
    // Ungültige Schriftgröße setzen, die einen Fehler provoziert
    $draw->setFontSize(-1);

    $imagick = new Imagick();
    $imagick->newImage(200, 100, new ImagickPixel('white'));
    $imagick->annotateImage($draw, 10, 50, 0, 'Test');
} catch (ImagickDrawException $e) {
    echo 'ImagickDraw-Fehler: ' . $e->getMessage() . PHP_EOL;
    echo 'Fehlercode: ' . $e->getCode() . PHP_EOL;
} catch (ImagickException $e) {
    echo 'Allgemeiner Imagick-Fehler: ' . $e->getMessage() . PHP_EOL;
} catch (Exception $e) {
    echo 'Unerwarteter Fehler: ' . $e->getMessage() . PHP_EOL;
}
ImagickDraw-Fehler: ...

Fehlerbehandlung beim Zeichnen von Formen

<?php
try {
    $draw = new ImagickDraw();
    $draw->setFillColor(new ImagickPixel('red'));
    $draw->setStrokeColor(new ImagickPixel('black'));
    $draw->setStrokeWidth(2);
    $draw->rectangle(10, 10, 190, 90);

    $imagick = new Imagick();
    $imagick->newImage(200, 100, new ImagickPixel('white'));
    $imagick->setImageFormat('png');
    $imagick->drawImage($draw);

    header('Content-Type: image/png');
    echo $imagick->getImageBlob();
} catch (ImagickDrawException $e) {
    // Spezifischer Fehler beim Zeichnen
    error_log('ImagickDraw schlug fehl: ' . $e->getMessage());
    http_response_code(500);
    echo 'Fehler beim Erzeugen der Grafik.';
} catch (ImagickException $e) {
    error_log('Imagick-Fehler: ' . $e->getMessage());
    http_response_code(500);
    echo 'Fehler beim Erzeugen der Grafik.';
}

// Wichtig · Fallstricke

Die imagick-Erweiterung muss korrekt installiert und konfiguriert sein, damit ImagickDrawException verfügbar ist. Ohne die Erweiterung existiert die Klasse nicht und der Code schlägt mit einem fatalen Fehler fehl.

Da nicht alle fehlerhaften Parameter bei ImagickDraw-Methoden zwingend eine Ausnahme auslösen (manche werden still ignoriert oder normalisiert), sollte der Rückgabewert von Methoden geprüft werden, sofern dokumentiert.