Signatur
Beschreibung
ImagickPixelException ist eine spezialisierte Ausnahmeklasse der Imagick-Erweiterung, die bei Fehlern rund um Pixeloperationen geworfen wird. Sie erweitert die Standard-Exception-Klasse und ermöglicht damit eine gezielte Fehlerbehandlung für ImagickPixel-Operationen.
Typische Auslöser sind ungültige Farbwerte, fehlerhafte Farbraumkonvertierungen oder nicht unterstützte Farbformate beim Erstellen oder Manipulieren eines ImagickPixel-Objekts. Da ImagickPixelException von Exception erbt, stehen alle üblichen Methoden wie getMessage(), getCode() und getTrace() zur Verfügung.
Es empfiehlt sich, bei der Arbeit mit ImagickPixel stets einen try/catch-Block zu verwenden und ImagickPixelException gezielt abzufangen, um Fehler in der Farbverarbeitung sauber von anderen Imagick-Fehlern zu trennen. Für allgemeinere Imagick-Fehler existiert zusätzlich die Klasse ImagickException.
Beispiele
Ungültigen Farbwert abfangen
<?php
try {
// Ungültiger Farbname führt zu einem Fehler
$pixel = new ImagickPixel('kein-gültiger-farbname-xyz');
echo 'Farbe: ' . $pixel->getColorAsString();
} catch (ImagickPixelException $e) {
echo 'ImagickPixel-Fehler: ' . $e->getMessage() . PHP_EOL;
echo 'Fehlercode: ' . $e->getCode() . PHP_EOL;
} catch (ImagickException $e) {
echo 'Allgemeiner Imagick-Fehler: ' . $e->getMessage() . PHP_EOL;
}
Gezielte Fehlerbehandlung bei Pixelvergleich
<?php
function vergleicheFarben(string $farbe1, string $farbe2): float {
try {
$pixel1 = new ImagickPixel($farbe1);
$pixel2 = new ImagickPixel($farbe2);
return $pixel1->getColorDistortion($pixel2, Imagick::METRIC_ABSOLUTEERRORMETRIC);
} catch (ImagickPixelException $e) {
// Gezieltes Abfangen von Pixel-spezifischen Fehlern
error_log('Fehler bei Farbverarbeitung: ' . $e->getMessage());
throw new RuntimeException('Ungültiger Farbwert übergeben.', 0, $e);
}
}
try {
$distanz = vergleicheFarben('red', 'blue');
echo 'Farbabstand: ' . $distanz . PHP_EOL;
// Fehlerfall
$distanz2 = vergleicheFarben('red', 'ungueltig!!!');
} catch (RuntimeException $e) {
echo 'Laufzeitfehler: ' . $e->getMessage() . PHP_EOL;
echo 'Ursprünglicher Fehler: ' . $e->getPrevious()->getMessage() . PHP_EOL;
}
// Wichtig · Fallstricke
Verfügbarkeit: ImagickPixelException ist nur verfügbar, wenn die Imagick-PHP-Erweiterung installiert und aktiviert ist. Sie ist nicht Teil des PHP-Kerns.
Hierarchie: Beim Abfangen mehrerer Imagick-Ausnahmen sollte ImagickPixelException vor ImagickException und Exception stehen, da PHP den ersten passenden catch-Block verwendet. Andernfalls würde ein allgemeinerer Handler zuerst greifen.
Fehlercode: Der über getCode() zurückgegebene Wert entspricht dem internen ImageMagick-Fehlercode, der für eine detailliertere Fehlerdiagnose herangezogen werden kann.