Exceptions de base

Exceptions de base

Aspose.PSD FOSS pour Python définit deux types d’exception spécifiques à la gestion de PSD/PSB : PsdLoadException, levée lors de l’analyse d’un document, et PsdSaveException, levée lors de son écriture. Les deux dérivent de la classe intégrée Exception et acceptent un message ainsi qu’un inner_exception optionnel.


Capture des échecs de chargement

PsdLoadException est levée pour plusieurs échecs de validation structurelle lors de l’analyse d’un document :

from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.coreexceptions.psdloadexception import PsdLoadException

try:
    image = PsdImage.load(input_path)
except PsdLoadException as ex:
    print(f"Failed to load PSD/PSB file: {ex}")

Les messages courants incluent "Invalid PSD signature. Expected '8BPS' (0x38425053)." (le fichier ne commence pas par une signature PSD/PSB), "Unsupported PSD version: {n}. ..." (le champ de version n’est ni PSD ni PSB), et "{section} length {n} exceeds the enclosing section boundary." (la longueur déclarée d’une section est incohérente avec la taille réelle du fichier).


Capture des échecs d’enregistrement

PsdSaveException a un seul point de levée dans cette construction FOSS — une vérification de la longueur d’une chaîne Pascal :

from aspose_psd_foss.coreexceptions.psdsaveexception import PsdSaveException

try:
    image.save(output_path)
except PsdSaveException as ex:
    print(f"Failed to save PSD/PSB file: {ex}")

Son message est "PSD Pascal string length {n} exceeds the supported maximum 255." — levé lorsque le nom d’une couche ou d’une ressource dépasse 255octets.


Examen d’une exception interne

Les deux types d’exception acceptent un argument de constructeur inner_exception, rempli lorsqu’une défaillance d’E/S sous-jacente a provoqué l’exception:

try:
    image = PsdImage.load(input_path)
except PsdLoadException as ex:
    if ex.inner_exception is not None:
        print(f"Underlying cause: {ex.inner_exception}")

Le motif NotSupportedException

Plusieurs mutateurs de propriétés ailleurs dans le API lèvent NotSupportedException plutôt que PsdLoadException/PsdSaveException — cela indique une propriété qui est intentionnellement en lecture seule dans cette version FOSS, et non une erreur d’analyse ou d’écriture. Voir Resources and Layers pour les propriétés spécifiques concernées.


Conseils et meilleures pratiques

  • Capturez spécifiquement PsdLoadException et PsdSaveException plutôt que la classe de base Exception lorsque vous devez distinguer les échecs de chargement des échecs d’enregistrement.
  • ArgumentNullException (levé lorsque PsdImage.load est appelé avec un flux None) et NotSupportedException sont des types d’exception distincts — pas des variantes de PsdLoadException/PsdSaveException.

Problèmes courants

ProblèmeCauseCorrection
PsdLoadException à propos d’une version non prise en chargeLe champ de version du fichier n’est ni la valeur standard PSD ni PSBConfirmez que le fichier est un document PSD/PSB authentique et non corrompu
PsdSaveException concernant une longueur de chaîne PascalLe nom d’un calque ou d’une ressource dépasse 255 octetsRaccourcissez la valeur avant de l’enregistrer

FAQ

Les PsdLoadException et PsdSaveException partagent-ils un type d’exception de base commun ?

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

Le fait d’intercepter Exception interceptera-t-il également ces deux types ?

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


API Reference Résumé

Classe/MéthodeDescription
PsdLoadException(message, inner_exception=None)Levé lors de l’analyse du document
PsdSaveException(message, inner_exception=None)Soulevé lors de la rédaction du document
NotSupportedException(message, inner_exception=None)Soulevé par les setters en lecture seule dans cette construction FOSS

Voir aussi

 Français