Alapvető kivételek
Alap Kivételek
Aspose.PSD FOSS for Python két kivételtípust határoz meg, amelyek a PSD/PSB kezelésére specifikusak: PsdLoadException, amely dokumentum elemzése közben kerül kivételhez, és PsdSaveException, amely írás közben kerül kivételhez. Mindkettő a beépített Exception osztályból származik, és elfogad egy üzenetet plusz egy opcionális inner_exception.
Betöltési Hibák Elkapása
PsdLoadException több szerkezeti érvényesítési hiba esetén kerül kivételhez dokumentum elemzése közben:
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}")Gyakori üzenetek a következők: "Invalid PSD signature. Expected '8BPS' (0x38425053)." (a fájl nem PSD/PSB aláírással kezdődik), "Unsupported PSD version: {n}. ..." (a verziómező sem PSD, sem PSB), és "{section} length {n} exceeds the enclosing section boundary." (egy szakasz deklarált hossza nem egyezik a fájl tényleges méretével).
Mentési Hibák Elkapása
PsdSaveException egyetlen kivételhelyet tartalmaz ebben a FOSS buildben — egy Pascal-karakterlánc hossz ellenőrzése:
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}")Az üzenete "PSD Pascal string length {n} exceeds the supported maximum 255." — akkor keletkezik, amikor egy réteg vagy erőforrás neve meghaladja a 255 bájtot.
Belső kivétel vizsgálata
Mindkét kivételtípus elfogad egy inner_exception konstruktorargumentumot, amely kitöltődik, amikor egy alapszintű I/O hiba okozza a kivételt:
try:
image = PsdImage.load(input_path)
except PsdLoadException as ex:
if ex.inner_exception is not None:
print(f"Underlying cause: {ex.inner_exception}")A NotSupportedException minta
Több tulajdonság beállító a API más részein kivételt dob NotSupportedException ahelyett, hogy PsdLoadException/PsdSaveException — ez azt jelzi, hogy a tulajdonság szándékosan csak olvasható ebben a FOSS változatban, nem pedig elemzési vagy írási hiba. Lásd Resources and Layers az érintett konkrét tulajdonságoknál.
Tippek és bevált gyakorlatok
- Kapcsold el konkrétan a
PsdLoadExceptionésPsdSaveExceptionkivételeket aExceptionalapkivétel helyett, ha meg kell különböztetned a betöltési hibákat a mentési hibáktól. ArgumentNullException(akkor keletkezik, amikor aPsdImage.loadegyNoneadatfolammal hívódik) ésNotSupportedExceptionkülönálló kivételtípusok — nem aPsdLoadException/PsdSaveExceptionváltozatai.
Gyakori problémák
| Probléma | Ok | Javítás |
|---|---|---|
PsdLoadException egy nem támogatott verzióról | A fájl verziómezője sem a szabványos PSD, sem a PSB értéknek nem felel meg | Erősítse meg, hogy a fájl egy eredeti, sértetlen PSD/PSB dokumentum |
PsdSaveException egy Pascal-karakterlánc hosszával kapcsolatban | Egy réteg vagy erőforrás neve meghaladja a 255 bájtot | Rövidítse az értéket mentés előtt |
FAQ
A PsdLoadException és a PsdSaveException közös alapkivétel típust használnak?
Nem — mindkettő közvetlenül a beépített Exception osztályból származik, nem egymásból vagy egy közös Aspose.PSD alapkivétel osztályból.
A Exception elkapása is elkapja ezeket a két típust?
Igen, mivel mindkettő a Exception osztályból származik — de a konkrét típusok elkapása lehetővé teszi, hogy megkülönböztesd a betöltési hibákat a mentési hibáktól.
API Reference Összegzés
| Osztály/Módszer | Leírás |
|---|---|
PsdLoadException(message, inner_exception=None) | A dokumentum elemzése során keletkezett |
PsdSaveException(message, inner_exception=None) | A dokumentum írása során keletkezett |
NotSupportedException(message, inner_exception=None) | A read-only-in-this-FOSS-build beállítók által keletkezett |