Kern-Ausnahmen

Kernausnahmen

Aspose.PSD FOSS für Python definiert zwei Ausnahmetypen, die spezifisch für die PSD/PSB-Verarbeitung sind: PsdLoadException, ausgelöst beim Parsen eines Dokuments, und PsdSaveException, ausgelöst beim Schreiben eines Dokuments. Beide erben von dem eingebauten Exception und akzeptieren eine Nachricht plus ein optionales inner_exception.


Abfangen von Ladezeit-Fehlern

PsdLoadException wird bei mehreren strukturellen Validierungsfehlern beim Parsen eines Dokuments ausgelöst:

from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.coreexceptions.psdloadexception import PsdLoadException

try:
    image = PsdImage.load(input_path)
except PsdLoadException as ex:
    print(f"Failed to load PSD/PSB file: {ex}")

Übliche Meldungen umfassen "Invalid PSD signature. Expected '8BPS' (0x38425053)." (die Datei beginnt nicht mit einer PSD/PSB-Signatur), "Unsupported PSD version: {n}. ..." (das Versionsfeld ist weder PSD noch PSB) und "{section} length {n} exceeds the enclosing section boundary." (die deklarierte Länge eines Abschnitts stimmt nicht mit der tatsächlichen Dateigröße überein).


Abfangen von Speicherzeit-Fehlern

PsdSaveException hat in diesem FOSS-Build einen einzigen Auslösepunkt — eine Pascal-String-Längenprüfung:

from aspose_psd_foss.coreexceptions.psdsaveexception import PsdSaveException

try:
    image.save(output_path)
except PsdSaveException as ex:
    print(f"Failed to save PSD/PSB file: {ex}")

Seine Meldung ist "PSD Pascal string length {n} exceeds the supported maximum 255." — ausgelöst, wenn ein Layer- oder Ressourcename 255Bytes überschreitet.


Untersuchen einer inneren Ausnahme

Beide Ausnahmetypen akzeptieren ein inner_exception-Konstruktorargument, das ausgefüllt wird, wenn ein zugrunde liegender I/O-Fehler die Ausnahme verursacht hat:

try:
    image = PsdImage.load(input_path)
except PsdLoadException as ex:
    if ex.inner_exception is not None:
        print(f"Underlying cause: {ex.inner_exception}")

Das NotSupportedException-Muster

Mehrere Property-Setter an anderer Stelle im API lösen aus NotSupportedException statt PsdLoadException/PsdSaveException — das signalisiert eine Property, die in diesem FOSS-Build bewusst schreibgeschützt ist, und keinen Parsing- oder Schreibfehler. Siehe Resources and Layers für die betroffenen Eigenschaften.


Tipps und bewährte Verfahren

  • Fange PsdLoadException und PsdSaveException gezielt statt der Basisausnahme Exception, wenn du Ladefehler von Speicherfehlern unterscheiden musst.
  • ArgumentNullException (ausgelöst, wenn PsdImage.load mit einem None-Stream aufgerufen wird) und NotSupportedException sind separate Ausnahmetypen — keine Varianten von PsdLoadException/PsdSaveException.

Häufige Probleme

ProblemUrsacheLösung
PsdLoadException über eine nicht unterstützte VersionDas Versionsfeld der Datei ist weder der standardmäßige PSD- noch PSB-WertBestätigen Sie, dass die Datei ein echtes, unbeschädigtes PSD/PSB-Dokument ist
PsdSaveException über eine Pascal-String-LängeEin Ebenen- oder Ressourcenname überschreitet 255ByteKürzen Sie den Wert vor dem Speichern

FAQ

Teilen PsdLoadException und PsdSaveException einen gemeinsamen Basisausnahmetyp?

Nein — beide erben direkt von dem eingebauten Exception, nicht voneinander oder einer gemeinsamen Aspose.PSD Basisausnahmeklasse.

Wird das Abfangen von Exception auch diese beiden Typen erfassen?

Ja, da beide von Exception erben — aber das Abfangen der spezifischen Typen ermöglicht es Ihnen, Ladefehler von Speicherfehlern zu unterscheiden.


API Reference Zusammenfassung

Klasse/MethodeBeschreibung
PsdLoadException(message, inner_exception=None)Während der Dokumentanalyse ausgelöst
PsdSaveException(message, inner_exception=None)Während des Schreibens des Dokuments ausgelöst
NotSupportedException(message, inner_exception=None)Ausgelöst von read-only-in-this-FOSS-build Settern

Siehe auch

 Deutsch