Exceptions de base
Exceptions principales
La bibliothèque signale les échecs de chargement et d’enregistrement via deux types d’exception dédiés: PsdLoadException et PsdSaveException, tous deux dérivant de la classe standard Exception.
PsdLoadException
Lancée lorsque Image.Load() / PsdImage.Load() ne peuvent pas analyser l’entrée comme un document PSD ou PSB valide.
try
{
using var image = (PsdImage)Image.Load(inputPath);
}
catch (PsdLoadException ex)
{
Console.WriteLine($"Failed to load {inputPath}: {ex.Message}");
}PsdSaveException
Lancée lorsque PsdImage.Save() ne peut pas écrire le document.
try
{
image.Save(outputPath);
}
catch (PsdSaveException ex)
{
Console.WriteLine($"Failed to save {outputPath}: {ex.Message}");
}Constructeurs
Les deux types d’exception possèdent la même forme à deux constructeurs: un constructeur avec uniquement un message, et un constructeur avec message + exception interne pour encapsuler une défaillance de niveau inférieur.
throw new PsdLoadException("Unexpected end of stream while reading the PSD header.");
throw new PsdSaveException("Failed to write layer data.", innerException);Conseils et bonnes pratiques
- Capturez
PsdLoadExceptionautour de chaque appelImage.Load()/PsdImage.Load()qui traite des entrées externes. - Capturez
PsdSaveExceptionautour de chaque appelPsdImage.Save()si la destination (disque, flux) pourrait ne pas être accessible en écriture. - Les deux types étendent
Exception, donc uncatch (Exception)plus large les capture également — privilégiez les types spécifiques lorsque vous souhaitez distinguer les échecs de chargement des échecs d’enregistrement.
Problèmes courants
| Problème | Cause | Correction |
|---|---|---|
PsdLoadException sur un fichier qui s’ouvre correctement dans d’autres outils | L’entrée n’est pas un document PSD/PSB valide, ou utilise une fonctionnalité que l’analyseur de cette version FOSS ne reconnaît pas | Vérifiez que le fichier est un véritable document PSD/PSB ; signalez les fonctionnalités non prises en charge séparément des échecs de chargement |
PsdSaveException lors de l’écriture vers un flux | Le flux de destination peut ne pas être accessible en écriture ou avoir déjà été libéré | Confirmez que le flux est ouvert et accessible en écriture avant d’appeler Save() |
FAQ
Cette bibliothèque réessaie-t-elle automatiquement après un échec de chargement ou d’enregistrement?
Non. PsdLoadException et PsdSaveException sont levés une fois et doivent être gérés par l’appelant; il n’existe aucun réessai automatique.
Puis-je inspecter la cause originale d’une exception enveloppée?
Oui, lorsqu’il est fourni — les deux constructeurs acceptent un paramètre innerException, accessible via la propriété standard Exception.InnerException.
API Reference Résumé
| Classe/Méthode | Description |
|---|---|
PsdLoadException(message) / PsdLoadException(message, innerException) | Levée lorsqu’un document ne peut pas être chargé |
PsdSaveException(message) / PsdSaveException(message, innerException) | Levée lorsqu’un document ne peut pas être enregistré |