Eccezioni di base

Eccezioni di base

Aspose.PSD FOSS per Python definisce due tipi di eccezione specifici per la gestione di PSD/PSB: PsdLoadException, sollevata durante l’analisi di un documento, e PsdSaveException, sollevata durante la scrittura di uno. Entrambe derivano dall’integrato Exception e accettano un messaggio più un inner_exception opzionale.


Cattura dei fallimenti al caricamento

PsdLoadException è sollevata per diversi errori di convalida strutturale durante l’analisi di un documento:

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

Messaggi comuni includono "Invalid PSD signature. Expected '8BPS' (0x38425053)." (il file non inizia con una firma PSD/PSB), "Unsupported PSD version: {n}. ..." (il campo versione non è né PSD né PSB) e "{section} length {n} exceeds the enclosing section boundary." (la lunghezza dichiarata di una sezione è incoerente con le dimensioni effettive del file).


Cattura dei fallimenti al salvataggio

PsdSaveException ha un unico punto di sollevamento in questa build FOSS — un controllo della lunghezza della stringa 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}")

Il suo messaggio è "PSD Pascal string length {n} exceeds the supported maximum 255." — sollevato quando il nome di un layer o di una risorsa supera i 255 byte.


Ispezione di un’eccezione interna

Entrambi i tipi di eccezione accettano un argomento del costruttore inner_exception, popolato quando un errore I/O sottostante ha causato l’eccezione:

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

Il pattern NotSupportedException

Diversi setter di proprietà altrove nel API sollevano NotSupportedException piuttosto che PsdLoadException/PsdSaveException — questo segnala una proprietà intenzionalmente di sola lettura in questa build FOSS, non un errore di parsing o scrittura. Vedi Resources and Layers per le proprietà specifiche interessate.


Suggerimenti e migliori pratiche

  • Gestisci PsdLoadException e PsdSaveException specificamente anziché il base Exception quando devi distinguere i fallimenti di caricamento da quelli di salvataggio.
  • ArgumentNullException (sollevato quando PsdImage.load è chiamato con uno stream None) e NotSupportedException sono tipi di eccezione separati — non varianti di PsdLoadException/PsdSaveException.

Problemi comuni

ProblemaCausaCorrezione
PsdLoadException su una versione non supportataIl campo versione del file non corrisponde né al valore standard PSD né a quello PSBConferma che il file è un documento PSD/PSB autentico e non corrotto
PsdSaveException sulla lunghezza di una stringa PascalIl nome di un livello o di una risorsa supera i 255 byteAccorcia il valore prima di salvare

FAQ

I PsdLoadException e PsdSaveException condividono un tipo di eccezione base comune?

No — entrambi derivano direttamente dal Exception incorporato, non l’uno dall’altro né da una classe di eccezione base Aspose.PSD condivisa.

Catturare Exception intercetterà anche questi due tipi?

Sì, poiché entrambi derivano da Exception — ma catturare i tipi specifici consente di distinguere i fallimenti di caricamento da quelli di salvataggio.


API Reference Riepilogo

Classe/MetodoDescrizione
PsdLoadException(message, inner_exception=None)Generato durante l’analisi del documento
PsdSaveException(message, inner_exception=None)Generato durante la scrittura del documento
NotSupportedException(message, inner_exception=None)Generato dai setter read-only-in-this-FOSS-build

Vedi anche

 Italiano