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
PsdLoadExceptionePsdSaveExceptionspecificamente anziché il baseExceptionquando devi distinguere i fallimenti di caricamento da quelli di salvataggio. ArgumentNullException(sollevato quandoPsdImage.loadè chiamato con uno streamNone) eNotSupportedExceptionsono tipi di eccezione separati — non varianti diPsdLoadException/PsdSaveException.
Problemi comuni
| Problema | Causa | Correzione |
|---|---|---|
PsdLoadException su una versione non supportata | Il campo versione del file non corrisponde né al valore standard PSD né a quello PSB | Conferma che il file è un documento PSD/PSB autentico e non corrotto |
PsdSaveException sulla lunghezza di una stringa Pascal | Il nome di un livello o di una risorsa supera i 255 byte | Accorcia 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/Metodo | Descrizione |
|---|---|
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 |