Základní výjimky

Základní výjimky

Aspose.PSD FOSS pro Python definuje dva typy výjimek specifické pro zpracování PSD/PSB: PsdLoadException, vyvolaná při parsování dokumentu, a PsdSaveException, vyvolaná při jeho zápisu. Obě jsou odvozeny od vestavěného Exception a přijímají zprávu plus volitelný inner_exception.


Zachytávání selhání při načítání

PsdLoadException je vyvolána pro několik selhání strukturální validace při parsování dokumentu:

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

Běžné zprávy zahrnují "Invalid PSD signature. Expected '8BPS' (0x38425053)." (soubor nezačíná podpisem PSD/PSB), "Unsupported PSD version: {n}. ..." (pole verze není ani PSD, ani PSB) a "{section} length {n} exceeds the enclosing section boundary." (deklarovaná délka sekce nesouhlasí se skutečnou velikostí souboru).


Zachytávání selhání při ukládání

PsdSaveException má v tomto FOSS buildu jediný výskyt vyvolání — kontrolu délky Pascalova řetězce:

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

Jeho zpráva je "PSD Pascal string length {n} exceeds the supported maximum 255." — vyvolána, když název vrstvy nebo zdroje přesáhne 255 bajtů.


Prohlížení vnitřní výjimky

Oba typy výjimek přijímají konstruktorový argument inner_exception, který je naplněn, když podkladové selhání I/O způsobilo výjimku:

try:
    image = PsdImage.load(input_path)
except PsdLoadException as ex:
    if ex.inner_exception is not None:
        print(f"Underlying cause: {ex.inner_exception}")

Vzor NotSupportedException

Několik nastavení vlastností jinde v API vyvolává NotSupportedException spíše než PsdLoadException/PsdSaveException — to signalizuje vlastnost, která je v tomto FOSS sestavení úmyslně jen pro čtení, ne chyba při parsování nebo zápisu. Viz Resources and Layers pro konkrétní dotčené vlastnosti.


Tipy a osvědčené postupy

  • Zachyťte konkrétně PsdLoadException a PsdSaveException místo základního Exception, když potřebujete rozlišovat selhání načítání od selhání ukládání.
  • ArgumentNullException (vyvolána, když je PsdImage.load voláno s None proudem) a NotSupportedException jsou samostatné typy výjimek — ne varianty PsdLoadException/PsdSaveException.

Časté problémy

ProblémPříčinaOprava
PsdLoadException o nepodporované verziPole verze souboru není ani standardní hodnota PSD, ani PSBPotvrďte, že soubor je pravý, nepoškozený PSD/PSB dokument
PsdSaveException o délce Pascalova řetězceNázev vrstvy nebo zdroje přesahuje 255 bytůZkraťte hodnotu před uložením

FAQ

Mají PsdLoadException a PsdSaveException společný základní typ výjimky?

Ne — oba jsou odvozeny přímo od vestavěného Exception, ne od sebe navzájem ani od sdílené základní třídy výjimek Aspose.PSD.

Zachytí Exception také tyto dva typy?

Ano, protože oba jsou odvozeny od Exception — ale zachycení konkrétních typů vám umožní rozlišit selhání načtení od selhání uložení.


API Reference Shrnutí

Třída/MetodaPopis:
PsdLoadException(message, inner_exception=None)Vyvoláno během parsování dokumentu
PsdSaveException(message, inner_exception=None)Vyvoláno během zápisu dokumentu
NotSupportedException(message, inner_exception=None)Vyvoláno nastaviteli s pouze-čtením v tomto FOSS sestavení

Viz také:

 Čeština