Hoe PSD Core-excepties af te handelen in Python

Hoe PSD Core-excepties af te handelen in Python

Aspose.PSD FOSS voor Python definieert twee exceptietypen: PsdLoadException, opgegooid tijdens het parseren van een PSD/PSB document, en PsdSaveException, opgegooid tijdens het schrijven ervan. Beide zijn afgeleid van de ingebouwde Exception en accepteren een bericht plus een optionele innerlijke exceptie.

Stapsgewijze handleiding

Stap 1: Installeer het pakket

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

Stap 2: Importeer de vereiste klassen

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

Stap 3: Vang laad-fouten op

PsdLoadException wordt opgegooid wanneer de structuur van een document de validatie niet doorstaat — bijvoorbeeld een niet-ondersteunde PSD/PSB versie, een sectielengte die de verklaarde grens van de omvattende sectie overschrijdt, of afgekorte streamgegevens:

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

Stap 4: Vang opslaan-tijd fouten op

PsdSaveException wordt opgegooid tijdens het schrijven van een document — bijvoorbeeld wanneer een tekenreekswaarde de lengte overschrijdt die een PSD Pascal-tekenreeksveld kan bevatten (255 bytes):

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

Stap 5: Inspecteer een interne exceptie

Beide exceptietypen accepteren een inner_exception constructorargument (intern gebruikt, bijvoorbeeld wanneer een I/O-fout het lezen van de bestandstructuur onderbreekt). Controleer inner_exception voor de onderliggende oorzaak:

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

Veelvoorkomende problemen en oplossingen

PsdLoadException met een bericht over een niet-ondersteunde versie. Het PSD-versieveld dat in het bestand is opgegeven, is noch de standaard-PSD noch de grote-document-PSB-waarde. Bevestig dat het bestand een echt, onbeschadigd PSD/PSB-document is.

PsdLoadException met een bericht over een sectielengte die een grens overschrijdt. De interne lengtevelden van het bestand komen niet overeen met de werkelijke grootte — dit duidt meestal op een afgekapt of beschadigd bestand in plaats van een niet-ondersteunde variant.

PsdSaveException over een Pascal-tekenreekslengte. Een tekenreekswaarde (zoals een laag- of resource-naam) overschrijdt 255 bytes, het maximum dat een PSD-Pascal-tekenreeksveld kan coderen. Verkort de waarde vóór het opslaan.

Veelgestelde vragen

Delen PsdLoadException en PsdSaveException een gemeenschappelijk basistype voor uitzonderingen?

Nee — beide afleiden rechtstreeks van de ingebouwde Exception, niet van elkaar of van een gedeelde Aspose.PSD basisklasse voor uitzonderingen.

Kan PsdSaveException optreden om andere redenen dan een lange tekenreekswaarde?

De bevestigde plaats waar de uitzondering wordt opgegooid in deze FOSS-build is de controle op de Pascal-tekenreekslengte. Andere I/O-fouten tijdens het opslaan (bijvoorbeeld een bestemmings-stream die niet kan worden weggeschreven) komen naar voren als het onderliggende Python-uitzonderingstype in plaats van te worden gewikkeld in PsdSaveException.

Zal het afvangen van Exception ook deze twee typen vangen?

Ja, omdat beide afstammen van Exception — maar door de specifieke types af te vangen kun je laadfouten onderscheiden van opslaffouten.

Zie ook

 Nederlands