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 PsdLoadException och PsdSaveException specifikt snarare än den grundläggande Exception när du behöver skilja laddningsfel från sparfel.
  • ArgumentNullException (kastas när PsdImage.load anropas med en None-ström) och NotSupportedException är separata undantagstyper — inte varianter av PsdLoadException/PsdSaveException.

Vanliga problem

ProblemOrsakÅtgärd
PsdLoadException om en version som inte stödsFilens versionsfält är varken standardvärdet för PSD eller PSBBekräfta att filen är ett äkta, odefekt PSD/PSB-dokument
PsdSaveException om en Pascal-stränglängdEtt lager- eller resursnamn överskrider 255 byteFö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/MetodBeskrivning
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

Se även

 Svenska