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
PsdLoadExceptionundPsdSaveExceptiongezielt statt der BasisausnahmeException, wenn du Ladefehler von Speicherfehlern unterscheiden musst. ArgumentNullException(ausgelöst, wennPsdImage.loadmit einemNone-Stream aufgerufen wird) undNotSupportedExceptionsind separate Ausnahmetypen — keine Varianten vonPsdLoadException/PsdSaveException.
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
PsdLoadException über eine nicht unterstützte Version | Das Versionsfeld der Datei ist weder der standardmäßige PSD- noch PSB-Wert | Bestätigen Sie, dass die Datei ein echtes, unbeschädigtes PSD/PSB-Dokument ist |
PsdSaveException über eine Pascal-String-Länge | Ein Ebenen- oder Ressourcenname überschreitet 255Byte | Kü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/Methode | Beschreibung |
|---|---|
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 |