Grundläggande undantag
Kärnuttag
Aspose.PSD FOSS för Python definierar två undantagstyper specifika för PSD/PSB hantering: PsdLoadException, som utlöses vid parsning av ett dokument, och PsdSaveException, som utlöses vid skrivning av ett sådant. Båda ärver från den inbyggda Exception och accepterar ett meddelande plus en valfri inner_exception.
Fånga fel vid inläsning
PsdLoadException utlöses för flera strukturella valideringsfel vid parsning av ett dokument:
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}")Vanliga meddelanden inkluderar "Invalid PSD signature. Expected '8BPS' (0x38425053)." (filen börjar inte med en PSD/PSB-signatur), "Unsupported PSD version: {n}. ..." (versionsfältet är varken PSD eller PSB), och "{section} length {n} exceeds the enclosing section boundary." (en sections deklarerade längd är inkonsekvent med filens faktiska storlek).
Fånga fel vid sparning
PsdSaveException har ett enda upplyftningsställe i detta FOSS-bygge — en Pascal-stränglängdskontroll:
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}")Dess meddelande är "PSD Pascal string length {n} exceeds the supported maximum 255." — kastas när ett lager- eller resursnamn överstiger 255 byte.
Inspektera ett inre undantag
Båda undantagstyperna accepterar ett inner_exception konstruktörsargument, som fylls i när ett underliggande I/O-fel orsakade undantaget:
try:
image = PsdImage.load(input_path)
except PsdLoadException as ex:
if ex.inner_exception is not None:
print(f"Underlying cause: {ex.inner_exception}")Mönstret NotSupportedException
Flera egenskaps-setters på andra ställen i API kastar NotSupportedException istället för PsdLoadException/PsdSaveException — detta indikerar en egenskap som avsiktligt är skrivskyddad i denna FOSS-byggnad, inte ett pars- eller skrivfel. Se Resources and Layers för de specifika egenskaper som påverkas.
Tips och bästa praxis
- Fånga
PsdLoadExceptionochPsdSaveExceptionspecifikt snarare än den grundläggandeExceptionnär du behöver skilja laddningsfel från sparfel. ArgumentNullException(kastas närPsdImage.loadanropas med enNone-ström) ochNotSupportedExceptionär separata undantagstyper — inte varianter avPsdLoadException/PsdSaveException.
Vanliga problem
| Problem | Orsak | Åtgärd |
|---|---|---|
PsdLoadException om en version som inte stöds | Filens versionsfält är varken standardvärdet för PSD eller PSB | Bekräfta att filen är ett äkta, odefekt PSD/PSB-dokument |
PsdSaveException om en Pascal-stränglängd | Ett lager- eller resursnamn överskrider 255 byte | Förkorta värdet innan du sparar |
FAQ
Delar PsdLoadException och PsdSaveException en gemensam basundantagstyp?
Nej — båda härstammar direkt från den inbyggda Exception, inte från varandra eller en gemensam Aspose.PSD basundantagsklass.
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 sparningsfel.
API Reference Sammanfattning
| Klass/Metod | Beskrivning |
|---|---|
PsdLoadException(message, inner_exception=None) | Uppstod vid parsning av dokument |
PsdSaveException(message, inner_exception=None) | Uppstått under dokumentskrivning |
NotSupportedException(message, inner_exception=None) | Uppstått av read-only-in-this-FOSS-build setters |