Excepții de bază

Excepții de bază

Aspose.PSD FOSS pentru Python definește două tipuri de excepții specifice gestionării PSD/PSB: PsdLoadException, ridicată în timpul parsării unui document, și PsdSaveException, ridicată în timpul scrierii unuia. Ambele derivă din Exception încorporat și acceptă un mesaj plus un inner_exception opțional.


Capturarea erorilor la încărcare

PsdLoadException este ridicată pentru mai multe eșecuri de validare structurală în timpul parsării unui document:

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

Mesajele comune includ "Invalid PSD signature. Expected '8BPS' (0x38425053)." (fișierul nu începe cu o semnătură PSD/PSB), "Unsupported PSD version: {n}. ..." (câmpul de versiune nu este nici PSD, nici PSB) și "{section} length {n} exceeds the enclosing section boundary." (lungimea declarată a unei secțiuni este inconsistentă cu dimensiunea reală a fișierului).


Capturarea erorilor la salvare

PsdSaveException are un singur loc de ridicare în această construcție FOSS — o verificare a lungimii șirului Pascal:

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

Mesajul său este "PSD Pascal string length {n} exceeds the supported maximum 255." — ridicat când un nume de strat sau de resursă depășește 255 de bytes.


Inspectarea unei excepții interne

Ambele tipuri de excepții acceptă un argument constructor inner_exception, populat când o eroare I/O subiacentă a cauzat excepția:

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

Modelul NotSupportedException

Mai multe setări de proprietate în alte părţi ale API ridică NotSupportedException în loc de PsdLoadException/PsdSaveException — acest lucru semnalează o proprietate care este intenționat doar citire în această versiune FOSS, nu o eroare de parsare sau scriere. Vezi Resources and Layers pentru proprietățile specifice afectate.


Sfaturi și cele mai bune practici

  • Prindeți PsdLoadException și PsdSaveException în mod specific în loc de baza Exception când trebuie să distingeți eșecurile de încărcare de cele de salvare.
  • ArgumentNullException (ridicat când PsdImage.load este apelat cu un flux None) și NotSupportedException sunt tipuri de excepții separate — nu variante ale PsdLoadException/PsdSaveException.

Probleme comune

ProblemăCauzăRemediere
PsdLoadException despre o versiune nesuportatăCâmpul de versiune al fișierului nu este nici valoarea standard PSD, nici valoarea PSBConfirmați că fișierul este un document PSD/PSB autentic și necorupt
PsdSaveException despre o lungime de șir PascalNumele unui strat sau al unei resurse depășește 255 de octețiScurtați valoarea înainte de a salva

FAQ

Împărtășesc PsdLoadException și PsdSaveException un tip de excepție de bază comun?

Nu — ambele derivă direct din Exception încorporat, nu una din cealaltă sau dintr-o clasă de excepție de bază Aspose.PSD comună.

Va prinde Exception și aceste două tipuri?

Da, deoarece ambele derivă din Exception — dar capturarea tipurilor specifice îți permite să diferențiezi eșecurile de încărcare de cele de salvare.


API Reference Rezumat

Clasă/MetodăDescriere:
PsdLoadException(message, inner_exception=None)Generat în timpul parsării documentului
PsdSaveException(message, inner_exception=None)Generat în timpul scrierii documentului
NotSupportedException(message, inner_exception=None)Generat de setatorii read-only-in-this-FOSS-build

Vezi și:

 Română