Come gestire le eccezioni di PSD Core in .NET

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 build

Passo 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.

Vedi anche

 Italiano