Come gestire le eccezioni di PSD Core in .NET
Aspose.PSD FOSS per .NET definisce due tipi di eccezione: PsdLoadException, generata durante l’analisi di un documento PSD/PSB, e PsdSaveException, generata durante la scrittura di uno. Entrambe derivano da System.Exception e supportano un costruttore solo messaggio e un costruttore messaggio più eccezione interna.
Guida passo-passo
Passo 1: Installa il pacchetto
git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet buildPasso 2: Importa le classi richieste
using Aspose.PSD.FileFormats.Psd;Passo 3: Gestisci gli errori di caricamento
PsdLoadException viene generato quando la struttura di un documento non supera la convalida — ad esempio, una versione PSD/PSB non supportata, una lunghezza di sezione che supera il limite dichiarato della sezione contenente, o dati di flusso troncati:
try
{
using var image = PsdImage.Load("input.psd");
}
catch (PsdLoadException ex)
{
Console.WriteLine($"Failed to load PSD/PSB file: {ex.Message}");
}Passo 4: Cattura gli errori al salvataggio
PsdSaveException viene generato durante la scrittura di un documento — ad esempio, quando il valore di una stringa supera la lunghezza che un campo stringa Pascal PSD può contenere:
try
{
image.Save("output.psd");
}
catch (PsdSaveException ex)
{
Console.WriteLine($"Failed to save PSD/PSB file: {ex.Message}");
}Passo 5: Ispeziona un’eccezione interna
Entrambi i tipi di eccezione hanno un costruttore che incapsula un’eccezione interna (usato internamente, ad esempio, quando un errore di I/O interrompe la lettura della struttura del file). Controlla InnerException per la causa sottostante:
try
{
using var image = PsdImage.Load("input.psd");
}
catch (PsdLoadException ex) when (ex.InnerException != null)
{
Console.WriteLine($"Underlying I/O error: {ex.InnerException.Message}");
}Problemi comuni e soluzioni
PsdLoadException con un messaggio riguardo a una versione non supportata. Il campo di versione PSD dichiarato nel file non è né il valore PSD standard né quello PSB per documenti di grandi dimensioni. Conferma che il file è un documento PSD/PSB genuino e non corrotto.
PsdLoadException con un messaggio riguardo a una lunghezza di sezione che supera un limite. I campi di lunghezza interni del file sono incoerenti con la sua dimensione reale — ciò indica solitamente un file troncato o corrotto piuttosto che una variante non supportata.
PsdSaveException riguardo alla lunghezza di una stringa Pascal. Un valore stringa (come il nome di un livello o di una risorsa) supera i 255 byte, il massimo che un campo stringa Pascal PSD può codificare. Accorcia il valore prima di salvare.
Domande Frequenti
I PsdLoadException e PsdSaveException condividono un tipo di eccezione base comune?
No — entrambi derivano direttamente da System.Exception, non l’uno dall’altro o da una classe di eccezione base condivisa Aspose.PSD.
Può PsdSaveException verificarsi per motivi diversi da un valore di stringa lungo?
Il punto di lancio confermato in questa build FOSS è il controllo della lunghezza della stringa Pascal. Altri errori I/O al momento del salvataggio (ad esempio, un flusso di destinazione su cui non è possibile scrivere) si manifestano come il tipo di eccezione .NET sottostante anziché essere avvolti in PsdSaveException.
Catturare Exception intercetterà anche questi due tipi?
Sì, poiché entrambi derivano da System.Exception — ma intercettare i tipi specifici ti consente di distinguere i fallimenti di caricamento da quelli di salvataggio.