Comment gérer les exceptions PSD Core dans .NET

Comment gérer les exceptions PSD Core dans .NET

Aspose.PSD FOSS pour .NET définit deux types d’exception: PsdLoadException, lancé lors de l’analyse d’un document PSD/PSB, et PsdSaveException, lancé lors de l’écriture d’un tel document. Les deux dérivent de System.Exception et supportent un constructeur uniquement avec un message ainsi qu’un constructeur message+exception interne.

Guide étape par étape

Étape1: installer le package

git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet build

Étape2: importer les classes requises

using Aspose.PSD.FileFormats.Psd;

Étape3: intercepter les échecs lors du chargement

PsdLoadException est levée lorsque la structure d’un document échoue à la validation — par exemple, une version PSD/PSB non prise en charge, une longueur de section qui dépasse la limite déclarée de la section englobante, ou des données de flux tronquées :

try
{
    using var image = PsdImage.Load("input.psd");
}
catch (PsdLoadException ex)
{
    Console.WriteLine($"Failed to load PSD/PSB file: {ex.Message}");
}

Étape 4: Intercepter les erreurs d’enregistrement

PsdSaveException est levée pendant l’écriture d’un document — par exemple, lorsqu’une valeur de chaîne dépasse la longueur qu’un champ de chaîne Pascal PSD peut contenir :

try
{
    image.Save("output.psd");
}
catch (PsdSaveException ex)
{
    Console.WriteLine($"Failed to save PSD/PSB file: {ex.Message}");
}

Étape 5: Examiner une exception interne

Les deux types d’exception possèdent un constructeur qui encapsule une exception interne (utilisé en interne, par exemple, lorsqu’une erreur d’E/S interrompt la lecture de la structure du fichier). Consultez InnerException pour identifier la cause sous-jacente :

try
{
    using var image = PsdImage.Load("input.psd");
}
catch (PsdLoadException ex) when (ex.InnerException != null)
{
    Console.WriteLine($"Underlying I/O error: {ex.InnerException.Message}");
}

Problèmes courants et solutions

PsdLoadException avec un message concernant une version non prise en charge. Le champ de version PSD déclaré du fichier n’est ni la valeur PSD standard ni la valeur PSB pour les documents volumineux. Confirmez que le fichier est un document PSD/PSB authentique et non corrompu.

PsdLoadException avec un message indiquant qu’une longueur de section dépasse une limite. Les champs de longueur internes du fichier sont incohérents avec sa taille réelle — cela indique généralement un fichier tronqué ou corrompu plutôt qu’une variante non prise en charge.

PsdSaveException concernant la longueur d’une chaîne Pascal. Une valeur de chaîne (par exemple le nom d’un calque ou d’une ressource) dépasse 255 octets, le maximum qu’un champ de chaîne Pascal PSD peut encoder. Raccourcissez la valeur avant d’enregistrer.

Foire aux questions

Est-ce que PsdLoadException et PsdSaveException partagent un type d’exception de base commun?

Non — les deux dérivent directement de System.Exception, pas l’un de l’autre ni d’une classe d’exception de base partagée Aspose.PSD.

Le PsdSaveException peut-il survenir pour des raisons autres qu’une valeur de chaîne trop longue?

Le point d’exception confirmé dans cette version FOSS est la vérification de la longueur de la chaîne Pascal. D’autres échecs d’E/S lors de l’enregistrement (par exemple, un flux de destination qui ne peut pas être écrit) se manifestent sous la forme de l’exception sous-jacente .NET plutôt que d’être encapsulés dans PsdSaveException.

La capture de Exception interceptera-t-elle également ces deux types?

Oui, puisque les deux dérivent de System.Exception — mais intercepter les types spécifiques vous permet de distinguer les échecs de chargement des échecs d’enregistrement.

Voir aussi

 Français