Hur man hanterar PSD Core-undantag i Python

Hur man hanterar PSD Core-undantag i Python

Aspose.PSD FOSS för Python definierar två undantagstyper: PsdLoadException, som kastas vid parsning av ett PSD/PSB-dokument, och PsdSaveException, som kastas vid skrivning av ett sådant. Båda ärver från den inbyggda Exception och accepterar ett meddelande samt ett valfritt inre undantag.

Steg-för-steg-guide

Steg 1: Installera paketet

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:$PYTHONPATH

Steg 2: Importera erforderliga klasser

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

Steg 3: Fånga fel vid inläsning

PsdLoadException kastas när ett dokuments struktur misslyckas med validering — till exempel en ej stödjande PSD/PSB version, en sektionslängd som överskrider den omslutande sektionens deklarerade gräns, eller trunkerad strömdatadata:

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

Steg 4: Fånga fel vid sparning

PsdSaveException kastas när ett dokument skrivs — till exempel när ett strängvärde överskrider den längd som ett PSD Pascal-strängfält kan hålla (255 byte):

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

Steg 5: Inspektera ett inre undantag

Båda undantagstyperna accepterar ett inner_exception-konstruktörsargument (används internt, till exempel när ett I/O-fel avbryter läsning av filstrukturen). Kontrollera inner_exception för den underliggande orsaken:

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}")

Vanliga problem och lösningar

PsdLoadException med ett meddelande om en ej stödd version. Filens deklarerade PSD-versionsfält är varken det standard-PSD-värdet eller det stora dokument-PSB-värdet. Bekräfta att filen är ett äkta, okorrupt PSD/PSB-dokument.

PsdLoadException med ett meddelande om att en sektionslängd överskrider en gräns. Filens interna längdfält är inkonsekventa med dess faktiska storlek — detta indikerar vanligtvis en avkortad eller korrupt fil snarare än en ej stödd variant.

PsdSaveException om en Pascal-stränglängd. Ett strängvärde (t.ex. ett lager- eller resursnamn) överskrider 255 byte, det maximala som ett PSD-Pascal-strängfält kan koda. Förkorta värdet innan du sparar.

Vanliga frågor

Delar PsdLoadException och PsdSaveException en gemensam basundantagstyp?

Nej — båda ärver direkt från den inbyggda Exception, inte från varandra eller en gemensam Aspose.PSD basundantagsklass.

Kan PsdSaveException uppstå av andra skäl än ett långt strängvärde?

Den bekräftade upphöjningsplatsen i detta FOSS-bygge är kontrollen av Pascal-stränglängden. Andra I/O-fel vid sparning (t.ex. ett destinationsflöde som inte kan skrivas till) visas som den underliggande Python undantagstypen snarare än att vara inbäddade i PsdSaveException.

Kommer fånga Exception också att fånga dessa två typer?

Ja, eftersom båda härstammar från Exception — men att fånga de specifika typerna låter dig skilja på laddningsfel och sparfel.

Se även

 Svenska