Eccezioni Core
Eccezioni di base
La libreria segnala i fallimenti di caricamento e salvataggio tramite due tipi di eccezione dedicati: PsdLoadException e PsdSaveException, entrambi estendono la classe standard Exception.
PsdLoadException
Generata quando Image.Load() / PsdImage.Load() non riesce a analizzare l’input come un documento PSD o PSB valido.
try
{
using var image = (PsdImage)Image.Load(inputPath);
}
catch (PsdLoadException ex)
{
Console.WriteLine($"Failed to load {inputPath}: {ex.Message}");
}PsdSaveException
Generata quando PsdImage.Save() non riesce a scrivere il documento.
try
{
image.Save(outputPath);
}
catch (PsdSaveException ex)
{
Console.WriteLine($"Failed to save {outputPath}: {ex.Message}");
}Costruttori
Entrambi i tipi di eccezione hanno la stessa struttura a due costruttori: un costruttore con solo messaggio e un costruttore messaggio-più-eccezione interna per avvolgere un errore di livello inferiore.
throw new PsdLoadException("Unexpected end of stream while reading the PSD header.");
throw new PsdSaveException("Failed to write layer data.", innerException);Suggerimenti e migliori pratiche
- Cattura
PsdLoadExceptionintorno a ogni chiamataImage.Load()/PsdImage.Load()che elabora input esterno. - Cattura
PsdSaveExceptionintorno a ogni chiamataPsdImage.Save()se la destinazione (disco, stream) potrebbe non essere scrivibile. - Entrambi i tipi estendono
Exception, quindi uncatch (Exception)più ampio li cattura anche — preferisci i tipi specifici quando vuoi distinguere i fallimenti di caricamento da quelli di salvataggio.
Problemi comuni
| Problema | Causa | Correzione |
|---|---|---|
PsdLoadException su un file che si apre correttamente in altri strumenti | L’input non è un documento PSD/PSB valido, o utilizza una funzionalità che il parser di questa build FOSS non riconosce | Conferma che il file è un vero documento PSD/PSB; segnala le funzionalità non supportate separatamente dai fallimenti di caricamento |
PsdSaveException durante la scrittura su uno stream | Lo stream di destinazione potrebbe non essere scrivibile o potrebbe essere già stato eliminato | Conferma che lo stream sia aperto e scrivibile prima di chiamare Save() |
FAQ
Questa libreria ritenta automaticamente dopo un errore di caricamento o di salvataggio?
No. PsdLoadException e PsdSaveException vengono sollevati una sola volta e devono essere gestiti dal chiamante; non c’è alcun tentativo automatico.
Posso ispezionare la causa originale di un’eccezione avvolta?
Sì, quando ne è fornita — entrambi i costruttori accettano un parametro innerException, accessibile tramite la proprietà standard Exception.InnerException.
API Reference Riepilogo
| Classe/Metodo | Descrizione |
|---|---|
PsdLoadException(message) / PsdLoadException(message, innerException) | Viene sollevata quando un documento non può essere caricato |
PsdSaveException(message) / PsdSaveException(message, innerException) | Viene sollevata quando un documento non può essere salvato |