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ě
PsdLoadExceptionaPsdSaveExceptionmísto základníhoException, když potřebujete rozlišovat selhání načítání od selhání ukládání. ArgumentNullException(vyvolána, když jePsdImage.loadvoláno sNoneproudem) aNotSupportedExceptionjsou samostatné typy výjimek — ne variantyPsdLoadException/PsdSaveException.
Časté problémy
| Problém | Příčina | Oprava |
|---|---|---|
PsdLoadException o nepodporované verzi | Pole verze souboru není ani standardní hodnota PSD, ani PSB | Potvrďte, že soubor je pravý, nepoškozený PSD/PSB dokument |
PsdSaveException o délce Pascalova řetězce | Ná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/Metoda | Popis: |
|---|---|
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í |