Cum să gestionați excepțiile PSD Core în Python
Aspose.PSD FOSS pentru Python definește două tipuri de excepții: PsdLoadException, ridicată în timpul parsării unui document PSD/PSB, și PsdSaveException, ridicată în timpul scrierii unuia. Ambele derivă din Exception încorporat și acceptă un mesaj plus o excepție internă opțională.
Ghid pas cu pas
Pasul 1: Instalați pachetul
git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-Python.git
cd Aspose.PSD-FOSS-for-Python
# No packaging manifest is published yet -- run from this folder,
# or add it to PYTHONPATH:
export PYTHONPATH=$PWD:$PYTHONPATHPasul 2: Importați clasele necesare
from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.coreexceptions.psdloadexception import PsdLoadException
from aspose_psd_foss.coreexceptions.psdsaveexception import PsdSaveExceptionPasul 3: Gestionați erorile la încărcare
PsdLoadException este ridicat când structura unui document nu trece validarea — de exemplu, o versiune PSD/PSB nesuportată, o lungime a secțiunii care depășește limita declarată a secțiunii părinte sau date de flux trunchiate:
try:
image = PsdImage.load("input.psd")
except PsdLoadException as ex:
print(f"Failed to load PSD/PSB file: {ex}")Pasul 4: Prinde erorile la salvare
PsdSaveException este ridicat în timpul scrierii unui document — de exemplu, când o valoare string depășește lungimea pe care un câmp de șir Pascal PSD o poate reține (255 de octeți):
try:
image.save("output.psd")
except PsdSaveException as ex:
print(f"Failed to save PSD/PSB file: {ex}")Pasul 5: Inspectează excepția interioară
Ambele tipuri de excepție acceptă un argument de constructor inner_exception (utilizat intern, de exemplu, când o eroare I/O întrerupe citirea structurii fișierului). Verifică inner_exception pentru cauza de bază:
try:
image = PsdImage.load("input.psd")
except PsdLoadException as ex:
if ex.inner_exception is not None:
print(f"Underlying I/O error: {ex.inner_exception}")Probleme comune și remedii
PsdLoadException cu un mesaj despre o versiune nesuportată. Câmpul versiunii PSD declarat în fișier nu este nici versiunea standard PSD, nici valoarea PSB pentru documente mari. Confirmați că fișierul este un document PSD/PSB autentic și necorupt.
PsdLoadException cu un mesaj despre o lungime a secțiunii care depășește o limită. Câmpurile de lungime interne ale fișierului sunt inconsistente cu dimensiunea sa reală — aceasta indică de obicei un fișier trunchiat sau corupt, mai degrabă decât o variantă nesuportată.
PsdSaveException despre lungimea unui șir Pascal. O valoare de tip șir (cum ar fi numele unui strat sau al unei resurse) depășește 255 de octeți, limita maximă pe care o poate codifica un câmp de șir Pascal în PSD. Reduceți lungimea valorii înainte de a salva.
Întrebări frecvente
Împărtășesc PsdLoadException și PsdSaveException un tip de excepție de bază comun?
Nu — ambele derivă direct din Exception încorporat, nu una din cealaltă sau dintr-o clasă de excepție de bază Aspose.PSD comună.
Poate PsdSaveException să apară din motive altele decât o valoare de șir lungă?
Locul de ridicare confirmat în această construcție FOSS este verificarea lungimii șirului Pascal. Alte eșecuri I/O în timpul salvării (de exemplu, un flux de destinație care nu poate fi scris) apar ca tipul de excepție Python de bază, în loc să fie învelite în PsdSaveException.
Va captura Exception și aceste două tipuri?
Da, deoarece ambele derivă din Exception — dar identificarea tipurilor specifice îți permite să diferențiezi eșecurile de încărcare de cele de salvare.